簡體   English   中英

從 CSV 文件中搜索 IP 地址

[英]Searching IP address from a CSV file

我有一個 CSV 文件,其中的列包含幾個帶有 IP 地址的字符串。 我成功運行了正則表達式查詢,但它在 output 中添加了隨機字符。

descr = df.loc[:, 'desc']

arr = []


pat = re.compile("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")

for i in descr:

     test = pat.findall(i)
     arr.append(test)

df["IPA"] = arr

它給出了IP地址Z78E6221F6393D135681DB398F14CE6DZ [(10, 35, 50, 4)]但我想要Z78E62221F6221F6393D1393D1356681DB3981DB398F16DAS398FB398F14ENG 3.398 Q.36DZ4ENG 3.398STZ4ENG.3.39.39.39.398.398.398.398.398.398.398.398 and 3.398; 3.398 Z.3.398; 3.398 Z.3.14.30andy 3.398 [(10, 35, 50, 3)]

您需要將您的組(括號內的任何內容)轉換為非捕獲組。 您可以通過在打開括號后立即添加“?:”來做到這一點。

pat = re.compile("(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)")

原因寫在function“findall”的定義上:

返回字符串中模式的所有非重疊匹配,作為字符串列表。 從左到右掃描字符串,並按找到的順序返回匹配項。 如果模式中存在一個或多個組,則返回組列表; 如果模式有多個組,這將是一個元組列表 結果中包含空匹配項。

因此,它會分別返回您地址中的所有組和數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM