【问题标题】:Regex custom form正则表达式自定义表单
【发布时间】:2020-12-29 16:34:18
【问题描述】:

我有这样的声明:

学分 电子存款/银行信贷 有效张贴 日期 日期 金额 交易明细 07/01 2,023,825.24 驿马车大扫除 07/02 2,023,825.24 驿马车大扫除 07/02 19,479.00 WT Fed#02868 E Trade Securities /Org=Etrade Securities LLC Srf# 8785491 070220 Trn#200702058382 Rfb# 07/03 2,042,191.24 驿马车大扫除 07/06 2,042,191.24 驿马车大扫除 07/07 2,042,191.24 驿马车大扫除 07/08 2,042,191.24 驿马车大扫除 07/09 2,042,191.24 驿马车大扫除 07/10 2,042,191.24 驿马车大扫除 07/13 2,042,191.24 驿马车大扫除 07/14 2,041,936.79 驿马车大扫除 07/15 2,041,936.79 驿马车大扫除 07/15 61,683.50 WT Fed#02317 E Trade Securities /Org=Etrade Securities LLC Srf# 8824249 071520 Trn#200715067847 Rfb#

我需要创建一个正则表达式公式,它将提取并分离 mm/dd 格式后的所有内容。

例子:

07/02 2,023,825.24 Stagecoach Sweep Credit 07/02 19,479.00 WT Fed#02868 E Trade Securities /Org=Etrade Securities LLC Srf# 8785491 070220 Trn#200702058382 Rfb#

那么该语句之后的下一行将是在该语句之后以 mm/dd 格式开始的语句

07/03 2,042,191.24 Stagecoach Sweep Credit 07/06 2,042,191.24 Stagecoach Sweep Credit

由于我对正则表达式完全陌生,我不知道如何处理流程..

非常感谢,

【问题讨论】:

  • Stackoverflow 不是免费提供代码的平台。提供您尝试过的解决方案,像“我只是不知道这是如何工作的”这样的陈述不是 stackoverflow 的工作方式。有关正则表达式的更多信息,请参见此处:docs.python.org/3/library/re.html 或此处:w3schools.com/python/python_regex.asp
  • @Jizef Fujka 不明白您尝试归档的内容。发布具有所需输出的正确示例。

标签: python regex string alteryx


【解决方案1】:

不幸的是,您自己的示例不符合您在 mm/dd 分隔符后分隔的规则。因此,尚不清楚实际的分隔符是什么。不过,这里有一个想法。

下面的代码将向您显示每个 mm/dd 匹配项及其在文本中的跨度。取结果中条目之间的跨度以根据需要对原始文本进行切片。如果你能准确地弄清楚切片应该如何并创建一个函数将所有内容放入一个不错的列表中,那将是最好的:

import re

txt = """\
Credits Electronic deposits/bank credits Effective Posted date date Amount Transaction detail 07/01 2,023,825.24 Stagecoach Sweep Credit 07/02 2,023,825.24 Stagecoach Sweep Credit 07/02 19,479.00 WT Fed#02868 E Trade Securities /Org=Etrade Securities LLC Srf# 8785491 070220 Trn#200702058382 Rfb# 07/03 2,042,191.24 Stagecoach Sweep Credit 07/06 2,042,191.24 Stagecoach Sweep Credit 07/07 2,042,191.24 Stagecoach Sweep Credit 07/08 2,042,191.24 Stagecoach Sweep Credit 07/09 2,042,191.24 Stagecoach Sweep Credit 07/10 2,042,191.24 Stagecoach Sweep Credit 07/13 2,042,191.24 Stagecoach Sweep Credit 07/14 2,041,936.79 Stagecoach Sweep Credit 07/15 2,041,936.79 Stagecoach Sweep Credit 07/15 61,683.50 WT Fed#02317 E Trade Securities /Org=Etrade Securities LLC Srf# 8824249 071520 Trn#200715067847 Rfb#"""

pattern = re.compile(r'(\d{2}/\d{2})')

res = re.finditer(pattern, txt)

for r in res:
    print(r)


# Two examples
print(txt[94:137])
print(txt[137:180])

【讨论】:

    【解决方案2】:

    这有点旧,但如果您没有找到解决方案,那么您可以在 Alteryx 中按照以下方式进行操作。

    首先,确保您的字段大小足够大(您可以使用 Select) 具有以下配置的正则表达式:

    表达式:(\s\d\d/\d\d\s)

    方法:替换

    文本:\n$1

    然后使用 Text to Columns: Delimiter (\n) and Split to Rows

    如果您随后需要将同一日期的数据移动到同一行,那么您可以使用多行,或者将日期拆分并使用汇总来连接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2016-07-22
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-18
      相关资源
      最近更新 更多