Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用.txt文件关键字搜索大型CSV_Python_Csv - Fatal编程技术网

Python 使用.txt文件关键字搜索大型CSV

Python 使用.txt文件关键字搜索大型CSV,python,csv,Python,Csv,正在寻找以下问题的解决方案: 我有一个大型CSV(data.CSV)文件,其中包含: 名|姓|电话号码|电子邮件地址等 然后我有一个.txt文件,其中有一个名字列表。文本文件将逐行格式化 smith johnson jones 我希望搜索大型CSV,并将包含该关键字的所有行导出到另一个CSV(Results.CSV) 例如: 在Data.csv中,搜索“Smith,Johnson,Jones”(来自keyword.txt)会将整行(如果姓氏匹配)导出到results.csv John Smit

正在寻找以下问题的解决方案:

我有一个大型CSV(data.CSV)文件,其中包含:

名|姓|电话号码|电子邮件地址

然后我有一个.txt文件,其中有一个名字列表。文本文件将逐行格式化

smith
johnson
jones
我希望搜索大型CSV,并将包含该关键字的所有行导出到另一个CSV(Results.CSV)

例如:

在Data.csv中,搜索“Smith,Johnson,Jones”(来自keyword.txt)会将整行(如果姓氏匹配)导出到results.csv

John Smith, 1234 Main St, 1800-800-8800, etc
John Johnson, 4321 South St...

在这里搜索,我把我要查找的内容的一部分放在一起,但仍然需要找出如何根据关键字匹配整行,然后将其导出到CSV

import re

searchlist = []
with open("keyword.txt") as g:
    for line in g:
        searchlist.append(line.strip())

pattern = re.compile("|".join(searchlist))
with open("data.csv") as f:
    for line in f:

如果您对正则表达式没有特殊需求,可以使用以下方法:

searchlist = []
with open("keyword.txt") as g:
    for line in g:
        searchlist.append(line.strip())

with open("data.csv") as f:
    for line in f:
        if any(s in line for s in searchlist):
            print(line, end='')
不区分大小写的查找:

        if any(s.upper() in line.upper() for s in searchlist):
            print(line, end='')

在开始填充搜索列表时,您可以使用大写()关键字填充搜索列表,从而节省一些额外的cpu周期。

file.txt中的数据如何?CSV中的字段是否包含多行文本?您的示例数据与您的描述不符-是以逗号分隔的名字和姓氏,还是需要对全名进行文本搜索?你有一个好的开始!在您的
for
中,您应该测试该行,然后将其存储在数据结构中,直到您完成整个过程。@GiovaniSalazar文本文件将是每行一个单词。@aventurin每个单元格都是单行文本。好的,很酷。这似乎显示了结果。现在如何将找到的行导出到CSV?