我使用Python和正則表達式來嘗試和搜索文本。給定一個文本文件中的字符串:正則表達式返回<_s而不是十進制值
line = (<layerThickness> 0.58 </layerThickness>)
我試圖分配0.58〜變量L,但輸出是一致的,「< _s」,而不是十進制值。這是我一直在嘗試:
L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)
任何幫助表示讚賞!
我使用Python和正則表達式來嘗試和搜索文本。給定一個文本文件中的字符串:正則表達式返回<_s而不是十進制值
line = (<layerThickness> 0.58 </layerThickness>)
我試圖分配0.58〜變量L,但輸出是一致的,「< _s」,而不是十進制值。這是我一直在嘗試:
L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)
任何幫助表示讚賞!
也許你只需要調用.group()
方法:
import re
line = '(<layerThickness> 0.58 </layerThickness>)'
L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line).group(0)
print(L)
產量
0.58
這個工程!其實,我試過羣法較早,但它沒有工作,因爲我是從1索引(我通常程序在Matlab中,從1索引,所以我是想組(1))和它保持引發錯誤,所以我嘗試訪問它沒有組。 Noob錯誤。謝謝一堆! – user1212148 2012-02-15 20:12:00
爲什麼,這是正確的!這是我所看到的:
>>> import re
>>> line = '(<layerThickness> 0.58 </layerThickness>)'
>>> L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)
>>> L.group()
'0.58'
你的正則表達式是好的,你只是沒有意識到re.search,如果找到匹配,返回re.Match對象。這是因爲re.Match對象不一定只有一個組。您需要使用re.Match.group或re.Match.groups方法返回組正則表達式發現的實際值。
>>> line = '(<layerThickness> 0.58 </layerThickness>)'
>>> L = re.search(r"([-+]?[0-9]*\.?[0-9]+)", line)
>>> print L
_sre.SRE_Match object at 0x100499dc8>
>>> print L.group()
0.58
注意,順便說一句,該集團仍然是一個字符串,而不是一個整數/浮點,你仍然需要將其轉換爲整數/浮點數學使用它。
還要注意使L可能沒有,如果你的行不包括匹配好,所以你需要在生產代碼來測試這一點。
你確定嗎?當我在這裏運行這個代碼時,'L.group(1)'是'0.58'。你能發佈翻譯的實際結果嗎? – bgporter 2012-02-15 19:14:18