我有包含字串和浮點數的檔案。我有興趣在特定字串之后找到浮點數。撰寫這樣一個函式來讀取檔案查找特定字串并在它之后回傳浮點數的任何幫助將不勝感激。
謝謝
一個檔案的例子是
lines = """aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb cccccccccc
qq vvv rrr ssssa 22.6
zzzzx bbbb 12.0
xxxxxxxxxx -1.099
zzzz bbb nnn 33.5"""
import re
lines = """aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb cccccccccc
qq vvv rrr ssssa 22.6
zzzzx bbbb 12.0
xxxxxxxxxx -1.099
zzzz bbb nnn 33.5"""
str_to_search = 'xxxxxxxxxx'
num = re.findall(r'^' str_to_search r' (\d \.\d )', lines, flags=re.M)
print(num)
如果沒有負號,這會起作用。換句話說,如果字串 'xxxxxxxxxx' 之后的數字是 1.099 而不是 '-1.099',它就可以正常作業。我的問題是如何歸納,所以它也可以考慮負數,因為它可以是正數(在這種情況下沒有符號)或負數(在這種情況下有負號)
uj5u.com熱心網友回復:
您可以使用正則運算式
(-?\d \.?\d*)
import re
lines = """aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb cccccccccc
qq vvv rrr ssssa 22.6
zzzzx bbbb 12.0
xxxxxxxxxx -1.099
zzzz bbb nnn 33.5
xxxxxxxxxx 1.099"""
str_to_search = "xxxxxxxxxx"
num = re.findall(fr"(?m)^{str_to_search}\s (-?\d \.?\d*)", lines)
print(num)
印刷:
['-1.099', '1.099']
uj5u.com熱心網友回復:
您可以將正則運算式更改為以下內容:
num = re.findall(r'^' str_to_search r' (-?\d \.?\d*)', lines, flags=re.M)
uj5u.com熱心網友回復:
我會在每個空間拆分整個檔案內容。這將為我們提供所有字串和浮點數的串列。然后使用 list.index(" ") 找到您正在搜索的字串的索引,將其放入 try/except 以確保如果字串不在內容中,您的代碼不會停止。然后只讀取下一個元素并嘗試將其轉換為浮點數。代碼:
lines = """aaaaaaaaaaaaaaa bbbbbbbbbbbbbbb cccccccccc
qq vvv rrr ssssa 22.6
zzzzx bbbb 12.0
xxxxxxxxxx -1.099
zzzz bbb nnn 33.5"""
lines = lines.replace("\n", " ").split(" ") # replace the newlines with spaces to split them as well
try:
float_index = lines.index("xxxxxxxxxx") 1 # Get the element after the string you are trying to find
num = float(lines[float_index])
except Exception as e:
print(e)
print(num)
如果您正在尋找正則運算式的解決方案,請使用 Andrej Kesely 的 awnser。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/536328.html
標籤:Python细绳文件文本
