gpt4 book ai didi

python - 构建正则表达式以检查特定的文本数据库格式

转载 作者:行者123 更新时间:2023-11-28 21:26:51 24 4
gpt4 key购买 nike

假设我有一个文本文件,它通过使用 | 符号来分隔数据库列来充当简单的数据库:

|some text| 234| other field| bla| 1232|

我想构造一个正则表达式来

  • 检查每行中有多少个字段(通过计算 | 符号的出现次数)
  • 检查哪些字段为空(两个 | 符号之间没有文本)
  • 将返回每个字段的值
  • 将从字段值周围去除空白。但要小心,空字段不应该被剥离!

这里有两个例子来说明我想要什么:

line = |some text| 234| other field| bla| 1232|
output = my_regexp(line)
disp(output)
'some text', '234', 'other field', 'bla', '1232'

现在相同,但这次字段 3 为空:

line2 = |some text| 234|  | bla| 1232|
output = my_regexp(line)
disp(output)
'some text', '234', '', 'bla', '1232'

我试过以下方法

values = regexp(regexprep(line '[\s]', ''), '\|', 'split')

但不幸的是这个解决方案没有

  • 检查有多少|存在
  • 不保留返回值的字段顺序,因为空字段会被忽略
  • 告诉我哪个字段是空的

我从未构建过复杂的正则表达式规则,感谢您的投入!

最佳答案

这可以使用 line.split 来完成,如下所示:

values = [v.strip() for v in line.split("|")[1:-1]]
num_fields = len(values)
num_empty_fields = values.count("")

获取空字段的索引列表:

indices_empty_fields = [i for i, f in enumerate(values) if f == ""]

要使用正则表达式,请将 values 的计算替换为:

import re
values = re.split("\s*\|\s*", line)[1:-1]

关于python - 构建正则表达式以检查特定的文本数据库格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12123850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com