gpt4 book ai didi

python - 使用多个分隔符和条件拆分字符串

转载 作者:行者123 更新时间:2023-12-01 04:21:37 25 4
gpt4 key购买 nike

我有一个来自日志文件的字符串,它有多个分隔符以使其顺序排列。

完整字符串field1.field2.field3/field4/field5|field6|field7//|field8..

分隔。 field1.field2.field3

/ /field4/field5 分隔

|分隔。但是,"/""." 不是这部分字符串的分隔符|field6|field7//|field8..

目前,我正在解析如下,

x
Out[64]: 'field1.field2.field3/field4/field5|field6|field7//|field8..'

y= x.split("|")
y
Out[66]: ['field1.field2.field3/field4/field5', 'field6', 'field7//', 'field8..']

z = y[0].split("/")
z
Out[68]: ['field1.field2.field3', 'field4', 'field5']

i = z[0].split(".")
i
Out[70]: ['field1', 'field2', 'field3']


result = i+z[1:]+y[1:]
result
Out[79]:
['field1',
'field2',
'field3',
'field4',
'field5',
'field6',
'field7//',
'field8..']

我认为这是一种非常低效的解析方式。感谢一些改进建议。

我无法使用所有三个分隔符[|\.]来无条件地分隔字符串中的属性

最佳答案

使用re.split

re.split(r'[./|]', x)

re.split(r'\b[./]\b|\|', x)
  • \b[./]\b 匹配前后有单词字符的所有点或正斜杠。

  • |

  • \| 匹配所有管道字符。

  • re.split 会根据匹配的字符进行拆分。

>>> s = "field1.field2.field3/field4/field5|field6|field7//|field8.."
>>> re.split(r'(?<!\.)\.(?!\.)|(?<!\/)\/(?!\/)|(?<!\|)\|(?!\|)', s)
['field1', 'field2', 'field3', 'field4', 'field5', 'field6', 'field7//', 'field8..']

关于python - 使用多个分隔符和条件拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33604180/

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