我使用Python的數字有2列有很多白色空間之間的列表,例如:選擇不同長度
TEXT 123.34645
TEXT 13.35372
TEXT 0.55532
TEXT 11.60538
我希望我的Python代碼抓住右邊的數字。
起初我是通過一行一行地抓取行[15:24]或其他 - 但後來我意識到一些數字是不同的長度,所以這是行不通的。
這樣做的正確方法是什麼?
我使用Python的數字有2列有很多白色空間之間的列表,例如:選擇不同長度
TEXT 123.34645
TEXT 13.35372
TEXT 0.55532
TEXT 11.60538
我希望我的Python代碼抓住右邊的數字。
起初我是通過一行一行地抓取行[15:24]或其他 - 但後來我意識到一些數字是不同的長度,所以這是行不通的。
這樣做的正確方法是什麼?
只需使用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
是分裂做出的最大數量。
.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']
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
>>>
矯枉過正這 – jamylak 2013-05-12 13:25:48
@jamylak你說的沒錯...'.rsplit()'快 – HennyH 2013-05-12 13:31:29