当前位置: 首页 > 知识库问答 >
问题:

正则表达式上的Camel分割CSV文件

秦伯寅
2023-03-14

我正在处理一个案例,其中我有一个csv文件,其中包含以下数据

100| Some Delimited Data
200| Some Delimited Data
100| Some Delimited Data
400| Some Delimited Data
400| Some Delimited Data
200| Some Delimited Data

我在尝试骆驼路线

when 100
  marshal csv & send to Bean
when 200
  marshal csv & send to bean

我正试着用骆驼路线。例如,当我使用XML时,我可以在路由中解析XML

我不能使用Camel-Bindy,因为我没有固定的分隔符

示例

Row 1 can have 10 '|' (pipes / delimiter)
Row 2 can have 20 '|' (pipes / delimiter)
Row 3 can have 16 '|' (pipes / delimiter)

它们的长度是可变的,我在bean中处理过。有什么方法可以解析或使用正则表达式吗?

共有1个答案

吴安和
2023-03-14

由于您总是使用|作为分隔符,因此可以使用默认的CSV支持将内容加载为列表列表,然后拆分正文以将每一行作为列表,然后在bean中处理该列表(行):

<unmarshal>
    <csv delimiter="|"/>
</unmarshal>
<split>
    <simple>${body}</simple> <!-- Body will be a list of lists -->
    <choice>
        <when>
            <simple>${body[0]} == '100'</simple>
            <to uri="bean:processor100"/>
        </when>         
        <when>
            <simple>${body[0]} == '200'</simple>
            <to uri="bean:processor200"/>
        </when>
    </choice>
</split>
 类似资料:
  • 问题内容: 我有表格形式的命令输出。我正在从结果文件中解析此输出,并将其存储在字符串中。一行中的每个元素都由一个或多个空格字符分隔,因此我正在使用正则表达式来匹配1个或多个空格并将其拆分。但是,每个元素之间都会插入一个空格: 有一个更好的方法吗? 每次拆分后都会添加到列表中。 问题答案: 通过使用,您将捕获该组,如果仅删除它们,则不会出现此问题。 但是,不需要正则表达式,没有指定任何定界符将为您将

  • 我正在寻找一个正则表达式来识别管道分隔的csv文件中出现的未转义双引号字符。也就是说,文件是以管道分隔的,每个字段都用双引号括起来,但有些字段包含单双引号字符,应该用额外的双引号转义,以符合RFC4180的要求<例如。 "字段1"|"字段2""文本中的文本""|"正确" "字段1"|"字段2"文本中的文本"|"不正确" 因为在第一行中,一个双引号已正确转义为另一个双引号字符。 我在找一个测试来找出

  • 昨天,我需要向正则表达式添加一个文件路径,创建一个如下所示的模式: 一开始正则表达式不匹配,因为包含几个正则表达式特定的符号,如 或 。作为快速修复,我将它们替换为 和 . 与 . 然而,我问自己,是否没有一种更可靠或更好的方法来清除正则表达式特定符号中的字符串。 Python 标准库中是否支持此类功能? 如果没有,您是否知道一个正则表达式来识别所有正则表达式并通过替代品清理它们?

  • 问题内容: 我有一个字符串,我想使用regex表达式拆分此字符串,以便该函数返回数组: 我将如何使用Swift进行此操作? 编辑 我的问题不同于链接的问题。我意识到您可以使用迅速拆分字符串。问题是该问题没有解决如何制作正则表达式的问题。我尝试使用,但是没有用。 如何使该部分成为正则表达式? 问题答案: Swift到目前为止还没有本地正则表达式。但提供。 运行此将输出

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 我的pandas df包含一个包含逗号分隔特征的列,如下所示: 我想将此列拆分为多个虚拟变量列,但无法弄清楚如何启动此过程。我正在尝试像这样拆分列: 但是,这不起作用,因为描述中间有逗号。取而代之的是,我需要根据逗号的正则表达式匹配,后跟一个空格和一个大写字母进行拆分。str.split可以使用正则表达式吗?如果是这样,这是怎么做的? 我认为正则表达式可以满足我的需求: 问题答案: 是