繁体   English   中英

按特定顺序用多个定界符分割字符串

[英]Splitting String with Multiple Delimiters in a Particular Order

我正在处理一种ASCII文件,其中实际上有4列数据,并且每一行都分配给文件中的一行。 以下是该文件中一行数据的示例

'STOP.F 11966.0000:STOP DEPTH'

数据的结构总是这样,第一列和第二列之间的定界符是一个句点,第二列和第三列之间的定界符是一个空格,第三列和第四列之间的定界符是一个冒号。

理想情况下,我想找到一种从上面的字符串返回以下结果的方法

['STOP', 'F', '11966.0000', 'STOP DEPTH']

我尝试使用以句点,空格和冒号作为定界符的正则表达式,但由于它不知道如何指定分割字符串的特定顺序,因此它分解了(请参见下面的示例),我也不知道是否有办法在正则表达式本身中指定每个定界符的最大分割数。 我希望它按特定顺序分割定界符,每个定界符最多1次。

import re
line = 'STOP.F 11966.0000:STOP DEPTH'
re.split("[. :]", line)
>>> ['STOP', 'F', '11966', '0000', 'STOP', 'DEPTH']

有什么建议吗?

这可能有效。 归功于胡安

import re
pattern = re.compile(r'^(.+)\.(.+) (.+):(.+)$')
line = 'STOP.F 11966.0000:STOP DEPTH'
pattern.search(line).groups()
Out[6]: ('STOP', 'F', '11966.0000', 'STOP DEPTH')

具有特定正则表达式模式的re.split()解决方案:

import re

s = 'STOP.F 11966.0000:STOP DEPTH'
result = re.split(r'(?<=^[^.]+)\.|(?<=^[^ ]+) |:', s)

print(result)

输出:

['STOP', 'F', '11966.0000', 'STOP DEPTH']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM