用多个分隔符拆分字符串?

2024-03-29 12:53:08 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Python: Split string with multiple delimiters

我可以用Python做类似的事情吗?在

拆分方法图书管理系统公司名称:

Dim line As String = "Tech ID: xxxxxxxxxx Name: DOE, JOHN Account #: xxxxxxxx"
Dim separators() As String = {"Tech ID:", "Name:", "Account #:"}
Dim result() As String
result = line.Split(separators, StringSplitOptions.RemoveEmptyEntries)

Tags: nameidstringaswithlineaccountresult
3条回答

如果数据格式不正确,可以尝试re.split()

>>> import re
>>> mystring = "Field 1: Data 1 Field 2: Data 2 Field 3: Data 3"
>>> a = re.split(r"(Field 1:|Field 2:|Field 3:)",mystring)
['', 'Field 1:', ' Data 1 ', 'Field 2:', ' Data 2 ', 'Field 3:', ' Data 3']

如果数据格式合理,使用带引号的字符串和逗号分隔的记录,那么您的工作就会轻松得多。这将允许使用csv模块来解析逗号分隔的值文件。在

编辑:

可以通过列表理解筛选出空白条目。在

^{pr2}$
>>> import re
>>> str = "Tech ID: xxxxxxxxxx Name: DOE, JOHN Account #: xxxxxxxx"
>>> re.split("Tech ID:|Name:|Account #:",str)
['', ' xxxxxxxxxx ', ' DOE, JOHN ', ' xxxxxxxx']

我建议另一种方法:

>>> import re
>>> subject = "Tech ID: xxxxxxxxxx Name: DOE, JOHN Account #: xxxxxxxx"
>>> regex = re.compile(r"(Tech ID|Name|Account #):\s*(.*?)\s*(?=Tech ID:|Name:|Account #:|$)")
>>> dict(regex.findall(subject))
{'Tech ID': 'xxxxxxxxxx', 'Name': 'DOE, JOHN', 'Account #': 'xxxxxxxx'}

这样你就得到了一个对这类数据有用的数据结构:字典。在

作为一个评论的regex:

^{pr2}$

相关问题 更多 >