如何在Python中拆分和解析字符串?

kam*_*mal 101 python string parsing split

我试图在python中拆分此字符串: 2.7.0_bf4fda703454

我想在下划线上拆分该字符串,_以便我可以使用左侧的值.

NPE*_*NPE 135

"2.7.0_bf4fda703454".split("_") 给出一个字符串列表:

In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']
Run Code Online (Sandbox Code Playgroud)

这会在每个下划线处拆分字符串.如果您希望在第一次拆分后停止,请使用"2.7.0_bf4fda703454".split("_", 1).

如果您知道字符串包含下划线这一事实,您甚至可以将LHS和RHS解压缩到单独的变量中:

In [8]: lhs, rhs = "2.7.0_bf4fda703454".split("_", 1)

In [9]: lhs
Out[9]: '2.7.0'

In [10]: rhs
Out[10]: 'bf4fda703454'
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用partition().用法与上一个示例类似,只是它返回三个组件而不是两个组件.主要优点是,如果字符串不包含分隔符,则此方法不会失败.


Eri*_*ski 76

Python字符串解析演练

在空格上拆分字符串,获取列表,显示其类型,打印出来:

el@apollo:~/foo$ python
>>> mystring = "What does the fox say?"

>>> mylist = mystring.split(" ")

>>> print type(mylist)
<type 'list'>

>>> print mylist
['What', 'does', 'the', 'fox', 'say?']
Run Code Online (Sandbox Code Playgroud)

如果您有两个彼此相邻的分隔符,则假定为空字符串:

el@apollo:~/foo$ python
>>> mystring = "its  so   fluffy   im gonna    DIE!!!"

>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']
Run Code Online (Sandbox Code Playgroud)

在下划线上拆分字符串并获取列表中的第5项:

el@apollo:~/foo$ python
>>> mystring = "Time_to_fire_up_Kowalski's_Nuclear_reactor."

>>> mystring.split("_")[4]
"Kowalski's"
Run Code Online (Sandbox Code Playgroud)

将多个空格折叠为一个

el@apollo:~/foo$ python
>>> mystring = 'collapse    these       spaces'

>>> mycollapsedstring = ' '.join(mystring.split())

>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']
Run Code Online (Sandbox Code Playgroud)

当你没有将参数传递给Python的split方法时,文档说明:"连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾处不包含空字符串".

抓住你的帽子男孩,解析正则表达式:

el@apollo:~/foo$ python
>>> mystring = 'zzzzzzabczzzzzzdefzzzzzzzzzghizzzzzzzzzzzz'
>>> import re
>>> mylist = re.split("[a-m]+", mystring)
>>> print mylist
['zzzzzz', 'zzzzzz', 'zzzzzzzzz', 'zzzzzzzzzzzz']
Run Code Online (Sandbox Code Playgroud)

正则表达式"[am] +"表示a通过m一次或多次出现的小写字母匹配为分隔符.re是要导入的库.

或者,如果您想一次选择一个项目:

el@apollo:~/foo$ python
>>> mystring = "theres coffee in that nebula"

>>> mytuple = mystring.partition(" ")

>>> print type(mytuple)
<type 'tuple'>

>>> print mytuple
('theres', ' ', 'coffee in that nebula')

>>> print mytuple[0]
theres

>>> print mytuple[2]
coffee in that nebula
Run Code Online (Sandbox Code Playgroud)

  • 要回答您的问题:`ding-ding-ding-ding-dingering gering ding-ding-ding-ding dinging gering ding ding ding ding ding dingeringing'。请不要恨我。 (2认同)

bgp*_*ter 17

如果它总是一个偶数LHS/RHS分割,你也可以使用partition内置于字符串中的方法.它返回一个3元组,就像(LHS, separator, RHS)找到了分隔符一样,(original_string, '', '')如果分隔符不存在:

>>> "2.7.0_bf4fda703454".partition('_')
('2.7.0', '_', 'bf4fda703454')

>>> "shazam".partition("_")
('shazam', '', '')
Run Code Online (Sandbox Code Playgroud)