[英]Random Characters while Searching IP address in a CSV file with python
[英]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.