2013-04-09 42 views
1

我有在以下格式行的文件:查找空間之間的串號,並解析它

d 55 r:100:10000 

我想找到55並解析它爲int。我怎樣才能做到這一點 ?我想使它變得間隔證明。這意味着中間可能會有更多或更少的空間,但肯定會在dr之間。

回答

3

str.split()方法默認分割上任意寬度空格:

>>> 'd 55  r:100:10000'.split() 
['d', '55', 'r:100:10000'] 

挑選出只是中間的數字,然後成爲一個簡單的選擇:

>>> int('d 55  r:100:10000'.split()[1]) 
55 

引用的文檔:

如果sep未指定或是None,應用了不同的分割算法:將連續空白的運行視爲單個分隔符,並且如果該字符串具有前導空格或尾隨空格,則結果將在開始或結束處不包含空字符串。因此,使用None分隔符將空字符串或僅由空白組成的字符串拆分返回[]

+0

哇,夥計,你快速發展!非常感謝。 – Patryk 2013-04-09 11:09:58

4

這很簡單:如果你確實需要檢查它是否是dr之間

number = int(line.split()[1]) 

,然後用

import re 
number = int(re.search(r"d\s+(\d+)\s+r", line).group(1)) 
2
>>> line = 'd 55 r:100:10000' 
>>> int(line.split()[1]) # By default splits by any whitespace 
55 

或被更有效率,你可以限制它分成兩部分(第二部分保存整數):

>>> int(line.split(None, 2)[1]) # None means split by any whitespace 
55 
相關問題