我使用的Python有两列的列表,中间有很多空格,例如:
TEXT 123.34645
TEXT 13.35372
TEXT 0.55532
TEXT 11.60538
我想让我的python代码抓住右边的数字。
起初我是这样做的,通过逐行和抓线[15:24]或其他什么 - 但后来我意识到有些数字是不同的长度,所以这不会起作用。< / p>
请问这样做的正确方法是什么?
答案 0 :(得分:5)
只需使用str.split()
:
>>> 'TEXT 123.34645\n'.split()
['TEXT', '123.34645']
.split()
的默认形式在任意宽度的空格上分割,忽略前导和尾随空格。在上面的示例中,行末尾的\n
将被忽略。
如果您的文字也包含空格,请使用带有限制的str.rsplit()
:
>>> 'TEXT WITH WHITESPACE 123.34645'.rsplit(None, 1)
['TEXT WITH WHITESPACE', '123.34645']
None
告诉.rsplit()
(或.split()
)拆分可变宽度空白,1
是要进行的最大拆分数。
答案 1 :(得分:2)
.split()
就是答案。
因此,当您从文本文件中读取行时,请将split()
方法应用于每一行。
In [1]: f = open('test.txt') # test.txt contains the text indicated in your question
In [2]: for line in f:
...: result = line.split()
...: print result
...:
['TEXT', '123.34645']
['TEXT', '13.35372']
['TEXT', '0.55532']
['TEXT', '11.60538']
答案 2 :(得分:1)
import re
with open('file.txt') as f:
for line in f:
text, number = re.search(r'([\w\s]+)\s+([\d.]+)',line).groups()
print(number)
可生产
123.34645
13.35372
0.55532
11.60538
>>>