嘿,即時通訊有一個問題,從我的列表中創建列表中與正則表達式匹配的所有字符串以及與DictReader相關聯的字段名稱。Dictreader和正則表達式,索引問題
我循環通過字符串數組,並想看看每個字符串的模式匹配:
reader = csv.DictReader(file)
for mystr in reader:
for i in range(len(mystr)):
if re.search(pattern, list(mystr.values())[i]):
data.append([list(reader.fieldnames)[i],list(mystr.values())[i]])
當一個字符串匹配的模式,它追加匹配的字符串和CSV字段名到名單。
這個工作,但似乎有一個問題,它附加一個看似隨機的字段名稱的正確和預期的匹配正則表達式值。
即,如果我的數據被責令
名稱,位置,價格
有時,如果從正則表達式條件將字段名稱的位置追加到與價格相關的數值。它似乎已經沒有可預見的模式,以該值是同事......
結果:
[ '與firstItem'],[ 'seconditem'],[ 'thirditem'],[ 'seconditem','27''],['fifthitem','201']]
[[''firstitem','1'],['seconditem'],['thirditem','12'], [ 'fourthitem'],[ 'fifthitem']
等。
數字都出現在正確的順序,他們只是在我看不懂的模式/順序中沒有對齊,所以我不知道爲什麼它們顯得有些隨意。任何幫助,將不勝感激。
你的文件的內容是什麼,你想讓你的數據列表看起來像什麼? – Billy
此外,我不認爲你是「循環訪問一系列字符串」。在你的'閱讀器中的mystr'循環中的'mystr'將是一本字典,而不是一個字符串。 – Billy
好的,以解決這兩個內容都是字符串,是的這是一個字典,我循環並試圖匹配每個元素的正則表達式,csv的內容基本上是5列的字符串,其中3列,但唯一值我與日期,價格和時間格式匹配的正則表達式,但目前我只是匹配的價格,一個標準的int – D3181