2017-05-03 44 views
0

認爲我在這裏做了一些愚蠢的事情,我如何使用正則表達式在python中搜索ip地址的文件?如何使用正則表達式搜索csv文件的ip地址?

到目前爲止,這是我:

def ip(): 
    ip = csv.reader(open('IP.csv'), delimited=',', quotechar='|') 
    for x in ip: 
     match = re.findall(r'(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})',x) 
     if x == ipmatch: 
      print(x) 

我要去哪裏錯得到TypeError: expected string or bytes-like object,當我跑的?它試圖在錯誤的地方使用匹配變量嗎?

+0

當你的代碼產生錯誤時,不僅要指定它或它們是什麼,而且還要知道它們在哪裏發生。更好的辦法是在可能的情況下包含完整的Traceback。除此之外,提供樣本輸入數據對於其他人爲您找到解決方案也非常有用。 – martineau

+1

你能從文件中發佈一些例子嗎? –

+1

問題可能是因爲'csv.reader'產生的'x'值都是值**的**列表**。您可能需要將它的每個元素分別傳遞給''re.findall()'',或者僅傳遞與csv文件中可能包含ip地址的列對應的元素,如'x [3] '。 – martineau

回答

0

CSV文件是一系列行,每行都有多個字段。你的x變量依次指向每一行;但一行是一個列表,你不能在列表中使用正則表達式。

我不確定你想要做什麼;如果每行只有一個字段,則根本不應該使用csv模塊,只需遍歷文件中的行即可。

+0

我明白了,是的,沒有錯過關於行和領域的那一步。我想要做的就是通過csv文件並打印任何匹配正則表達式模式的行/字段的任何字符串。似乎我正在以這種錯誤的方式進行 – user2086572