我想将带有数字,字母和特定空格的字符串拆分为特定组件。
考虑字符串
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'\s{2,}', 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'
?
答案 0 :(得分:1)
您可以使用替换:
\s{2,}|\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'\s{2,}|\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']
答案 1 :(得分:0)
您可以单独处理最后一个元素:
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
或者您可以使用正则表达式正确分割最后一个元素