【发布时间】:2020-11-25 05:35:18
【问题描述】:
嘿,我真的被困住了,我真的希望有人可以帮助我。我正在尝试读取 CSV 文件的前 5000 行,通过制表符分隔符拆分行,然后针对每一列和每一行搜索正则表达式模式,并输出具有最多正则表达式匹配/出现的列索引号。我将提供一个示例来帮助更好地解释我的意思。
test.csv
john smith 1132 Anywhere Lane Hoboken NJ 10.0.0.1 07030 Jan 4
erica meyers 1234 Smith Lane Hoboken NJ 127.0.0.1 07030 March 2
erica meyers 1234 Smith Lane Hoboken NJ 192.168.1.1 07030 april 5
这是我目前所在的位置(读取 csv,按制表符分隔成列,打印前 100 行):
import csv
import re
Num = 5000
with open('test.csv', newline='', encoding="cp437", errors='ignore') as csvfile:
reader = csv.reader(csvfile, delimiter='\t')
for i in range(Num):
lines = next(reader)
当前输出的前几行:
['john smith', '1132 Anywhere Lane Hoboken NJ', '10.0.0.1', ' 07030', 'Jan 4']
['john smith', '1234 Smith Lane Hoboken NJ', '127.0.0.1', ' 07030', 'March 2']
['smith john', '1234 Smith Lane Hoboken NJ', '192.168.1.1', ' 07030', 'april 5']
这是我卡住的地方......
我想针对每一行的所有列搜索正则表达式\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3},并输出与正则表达式匹配最多的列索引号。
对于此示例,\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 将匹配
10.0.0.1
127.0.0.1
192.168.1.1
所以我想要的输出是:
2
【问题讨论】:
-
为什么不用熊猫?
标签: python python-3.x