当前位置: 首页 > 知识库问答 >
问题:

Python CSV Regex基于大多数Regex匹配的所有列和输出列列表索引号

孙洋
2023-03-14

嘿,我真的卡住了,我真的希望有人能帮我解决这个问题。我试图读取CSV文件的前5000行,按制表符分隔行,然后根据每一列和每一行搜索正则表达式模式,并输出正则表达式匹配/出现次数最多的列索引号。我将提供一个例子来帮助更好地解释我的意思。

测验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']

这就是我被困的地方。。。

我想搜索regex{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

共有1个答案

洪祺
2023-03-14

你可以这样对熊猫

<代码>df=pd。读取csv(路径,nrows=5000,sep=“\t”)

编写一个函数来检查正则表达式是否匹配。

def check_regex_matches(x):
    
    return bool(re.match(regex, x))

然后您可以使用

list_of_bools_where_regex_matches = df["some_col"].apply(lambda
 x:check_regex_match(x))

df["some_col"][list_of_bools_where_regex_matches].index 

注意:请检查是否需要re。匹配或重新匹配。搜索https://stackoverflow.com/a/12595082/4213362

 类似资料:
  • 问题内容: 知道索引列会带来更好的性能,是否值得对数据库所有表中的所有列建立索引?这种方法的优点/缺点是什么? 如果值得的话,有没有一种方法可以在SQL Server中自动创建索引?我的应用程序动态地添加了表和列(取决于用户配置),我希望它们被自动索引。 问题答案: 由于上面提到的原因,很难想象在现实世界中对每列进行索引都是有用的。场景类型将需要一堆不同的查询,所有查询都只访问表的一列。每个查询可

  • 按降序排序的LinkedHashSet的输出。 对不起,如果这是混淆,我不知道如何去排序像这样。

  • 在下面的代码中:我正在读取一个文件,获取标题行,查找特定的标题列并存储它们的索引。然后我遍历其余的行,只需要这些索引的值。

  • 我有以下数据框: 我正在尝试为这个熊猫数据框确定适当的语法,如何为列“通道”等于A或B的所有实例编制索引。一旦找到所有实例,我想打印出来。此外,我希望能够在脚本中调用每个索引以获得进一步的应用程序。 我希望显示器是: 然后我想有一个“for循环”,它遍历并分别打印出每个索引实例,这样就很容易识别并单独调用它们,以便在脚本中进一步使用。有人能给点建议吗?

  • 问题内容: 有没有一种方法可以获取实例中所有数据库中所有存储过程中引用的所有列和表?输出应为: 问题答案: 这将得到您想要的列表,但是,如果您在动态SQL中嵌入了此类列引用(并且可能找不到依赖于延迟名称解析的引用),则将无济于事。SQL Server不会解析存储过程的文本以提供DMV输出。 现在尝试使用子句来处理在同一服务器上具有不同归类的数据库的情况。 如果您的数据库处于80兼容模式,那么该语法

  • 我把这个参数发送给我的strut动作 Cdata[1]=bar 在我的行动中,我对索引和值感兴趣。如OGNL文档所示,我为CDATA定义了一个getter/setter对: 这是我得到的例外: 如果我定义一个公共成员变量我在日志中没有看到任何异常,但我的setter也没有被调用。如果成员变量是私有的,我再次得到另一个异常。