Py学习  »  Python

用split分隔的字符串不是字符串?-python 3[复制]

di ami • 4 年前 • 346 次点击  

我正在尝试用python拆分此字符串: 2.7.0_bf4fda703454

我想在下划线上拆分该字符串 _ 这样我就可以使用左边的值。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38029
 
346 次点击  
文章 [ 3 ]  |  最新文章 4 年前
bgporter
Reply   •   1 楼
bgporter    12 年前

如果它总是一个均匀的左/右分离,你也可以使用 partition 方法,它内置于字符串中。它返回一个三元组作为 (LHS, separator, RHS) 如果找到分隔符,并且 (original_string, '', '') 如果不存在分隔符:

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

>>> "shazam".partition("_")
('shazam', '', '')
Daniel Griscom
Reply   •   2 楼
Daniel Griscom    8 年前

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?']

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

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

>>> print mystring.split(" ")
['its', '', 'so', '', '', 'fluffy', '', '', 'im', 'gonna', '', '', '', 'DIE!!!']

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

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

>>> mystring.split("_")[4]
"Kowalski's"

将多个空间折叠为一个

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

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

>>> print mycollapsedstring.split(' ')
['collapse', 'these', 'spaces']

当没有参数传递给python的split方法时, the documentation states :“连续空格的运行被视为单个分隔符,如果字符串有前导或尾随空格,则结果在开始或结束处将不包含空字符串”。

抓住你的帽子,伙计们,分析一个正则表达式:

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

正则表达式“[a-m]+”表示小写字母。 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
Boris Alex Martelli
Reply   •   3 楼
Boris Alex Martelli    5 年前

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

In [1]: "2.7.0_bf4fda703454".split("_")
Out[1]: ['2.7.0', 'bf4fda703454']

这将字符串拆分为 每一个 强调。如果要在第一次拆分后停止,请使用 "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'

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