我想與蟒解析一個簡單的字符串作爲 -Python的解析內部括號整數字符串中的
Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)
我想在不同的整數,以提取7,45,0,0,1,23。 有人能告訴我如何提取這個?
論壇中有很多字符串解析問題,但我無法找到最適合我的答案。
謝謝。
我想與蟒解析一個簡單的字符串作爲 -Python的解析內部括號整數字符串中的
Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)
我想在不同的整數,以提取7,45,0,0,1,23。 有人能告訴我如何提取這個?
論壇中有很多字符串解析問題,但我無法找到最適合我的答案。
謝謝。
使用regex
:
In [71]: import re
In [72]: strs="Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)"
In [74]: [int(digit) for digit in re.findall(r'\d+',strs)]
Out[74]: [7, 45, 0, 0, 1, 23]
爲什麼使用'{1,}'而不是'+'? –
當我輸入一些非常相似的東西時(雖然我使用列表理解將它們轉換爲整數而不是地圖),您也擊敗了我。 – TimothyAWiseman
刪除括號,'r'\ d +''很好。 – kwatford
如果你只是想在字符串中的所有數字:
>>> import re
>>> s = 'Limits paramA : (7, 45) paramB : (0, 0) paramC : (1, 23)'
>>> [int(n) for n in re.findall(r'\d+', s)]
[7, 45, 0, 0, 1, 23]
如果你只是想找到(同樣的結果在這種情況下)括號內的數字:
>>> [int(n) for m in re.findall(r'\(([\d, ]+)\)', s) for n in m.split(',')]
[7, 45, 0, 0, 1, 23]
下面是一個這種差異可能很重要的例子:
>>> s = 'Limits param1 : (7, 45) param2 : (0, 0) param3 : (1, 23)'
>>> [int(n) for n in re.findall(r'\d+', s)]
[1, 7, 45, 2, 0, 0, 3, 1, 23]
>>> [int(n) for m in re.findall(r'\(([\d, ]+)\)', s) for n in m.split(',')]
[7, 45, 0, 0, 1, 23]
需要注意的是第一種方法也與從param1
的1
和2
從param2
等
>>> import re
>>> import ast
>>> nums = [num for tup in [ast.literal_eval(tup) for tup in re.findall('\([^)]*\)', s)] for num in tup]
[7, 45, 0, 0, 1, 23]
括號內只提取號碼。
使用'ast.literal_eval()'而不是'eval()',這樣更安全。 –
感謝您的建議,我解決了我的答案。 – Lanaru
像「'Limits param1:(7,45)param2:(0,0)''這樣的字符串的期望輸出是什麼? –