社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

di ami • 5 年前 • 430 次点击  

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

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

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

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

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

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

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    6 年前

"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() . 用法与上一个示例类似,只是它返回三个组件而不是两个。其主要优点是,如果字符串不包含分隔符,则此方法不会失败。