Python 使用.txt文件关键字搜索大型CSV
正在寻找以下问题的解决方案: 我有一个大型CSV(data.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
名|姓|电话号码|电子邮件地址
等
然后我有一个.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?