我試過這個使用Python的重新庫。 從一個文件中,我得到幾行包含由條('|')分隔的元素。我把它們放在一個列表中,我需要的是將數字存入內部以便與它們一起操作。從Python字符串中提取十進制數與Python正則表達式
這將是我想要分割的字符串之一:
>>print(line_input)
>>[240, 7821, 0, 12, 605, 0, 3]|[1.5, 7881.25, 0, 543, 876, 0, 121]|[237, 761, 0, 61, 7, 605, 605]
和我的意圖是,以形成與每一方括號之間的元素的向量。
我創造了這個正則表達式
>>test_pattern="\|\[(\d*(\.\d+)?), (\d*(\.\d+)?), (\d*(\.\d+)?)]"
但結果有點混亂。特別是,結果是
>>vectors = re.findall(test_pattern, line_input)
>>print(vectors)
>>[('240', '', '7821', '', '0', '', '12', '', '605', '', '0', '', '3', ''), ('1.5', '.5', '7881.25', '.25', '0', '', '0', '', '0', '', '0', '', '0', ''), ('23437', '', '76611', '', '0', '', '0', '', '0', '', '605', '', '605', '')]
我不明白白色空間來自何處,也不知道小數部分爲什麼重複。我知道我幾乎可以得到它,至少,我確信它只是一個簡單的細節,但我不明白。
非常感謝您提前。
空格可能來自您的數字正則表達式。 '(\ d *(\。\ d +)?)'匹配一個空字符串。 ('\ d *'匹配0或更多數字,'(\。\ d +)?'*可選*匹配'.'後面的一個或多個數字。 '''') – 0x5453
是的,正如@ 0x5453所說的那樣,這些空格是空的可能的小數。你的'vectors'變量包含所有匹配的組,無論是否爲空。所以當有一個小數時,你會得到外部組的一個匹配(\ d *(\。\ d +)?)',另一個匹配內部組(\。\ d +)?'。使它們不匹配組。 –