如何在python中用数字、字母和空格分割字符串?
Posted
技术标签:
【中文标题】如何在python中用数字、字母和空格分割字符串?【英文标题】:How to split string with numbers, letters and white spaces in python ? 【发布时间】:2018-01-15 10:11:29 【问题描述】:我想将带有数字、字母和特定空格的字符串拆分为特定组件。
考虑字符串
ATLANTYS2_I - 3103 aRNH_profile - 121 2.7e-35 118.7 0.0 1 1 2.7e-37 5.6e-35 117.7 0.0 2 120 1342 1458 1341 1459 0.98 Gypsy Arabidopsis thaliana_+1
现在让字符串为content[3]
。我运行了命令
import re
result = re.split(r'\s2,', content[3])
这给了我
['ATLANTYS2_I',
'-',
'3103 aRNH_profile',
'-',
'121',
'2.7e-35',
'118.7',
'0.0',
'1',
'1',
'2.7e-37',
'5.6e-35',
'117.7',
'0.0',
'2',
'120',
'1342',
'1458',
'1341',
'1459 0.98 Gypsy\tArabidopsis thaliana_+1']
我已将字符串拆分为 2 个空格。但最后一个条目1459 0.98 Gypsy\tArabidopsis thaliana_+1
仍归为一个。
我想用一个空格分割最后一个条目,删除结果中的最后一个条目并添加一个空格。然而,这在我看来相当笨重。
有没有办法优雅地拆分它,以便我得到最后一个条目的以下结果
'1459','0.98', Gypsy\tArabidopsis thaliana_+1'
?
【问题讨论】:
我认为您需要单独拆分最后一个条目,即使这意味着更多代码。编写明确的代码比编写一个月内无法理解的“优雅”的单行代码更好。 我同意你将如何拆分最后一个条目以便我得到想要的结果? 这是您定义的字符串,您无法通过列表访问。请参阅此链接以更好地理解:docs.python.org/2/library/string.html 【参考方案1】:您可以使用替代:
\s2,|\t+
# either two+ whitespaces
# or at least one tabulator space
在
Python
:
import re
string = "ATLANTYS2_I - 3103 aRNH_profile - 121 2.7e-35 118.7 0.0 1 1 2.7e-37 5.6e-35 117.7 0.0 2 120 1342 1458 1341 1459 0.98 Gypsy Arabidopsis thaliana_+1"
rx = re.compile(r'\s2,|\t+')
print(rx.split(string))
产量
['ATLANTYS2_I', '-', '3103 aRNH_profile', '-', '121', '2.7e-35', '118.7', '0.0', '1', '1', '2.7e-37', '5.6e-35', '117.7', '0.0', '2', '120', '1342', '1458', '1341', '1459 0.98 Gypsy', 'Arabidopsis thaliana_+1']
【讨论】:
'1459 0.98 Gypsy'
必须是 '1459'
、'0.98'
、'Gypsy'
【参考方案2】:
你可以单独处理最后一个元素:
last_element = result.pop() # remove last element from list
numbers, plant = last_element.split('\t') # split on tab
result += numbers.split() # split the first part on spaces and add it back
result.append(plant) # add the second part back
或者您可以使用正则表达式正确拆分最后一个元素
【讨论】:
以上是关于如何在python中用数字、字母和空格分割字符串?的主要内容,如果未能解决你的问题,请参考以下文章
Python中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?