如何在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中如何从键盘中输入字符串,统计字母,数字,符号和空格的个数?

在MYSQL中用空格分割字符串

python中将指定的字符串转换为大写字母并每隔2个字符用空格分割后得到一个新字符串的方法

Python - 如何用非字母字符分割字符串

正则表达式标点分割[Python]

python学习:判断字符串中字母数字空格的个数