python - 从 CSV 文件中提取包含另一个 CSV 文件中的任何值的行
问题描述
一段时间以来,我一直在努力解决这个特定问题:
我有一个output.csv
看起来像这样的文件:
另一个07.csv
看起来像这样的文件:
我想做的是从 output.csv 文件中的 mmsi 列中获取值,并检查这些值中的任何一个是否在 07.csv 的任何行中,然后在新的 results072.csv 文件中提取这些行。到目前为止,这是我的代码,但它做了一件非常奇怪的事情:它以某种方式使这个新文件与 07.csv 一样大,并且包含更多值的行的外观。我真的很感激一些反馈!先感谢您!
import csv
with open('output.csv') as hashes:
hashes = csv.reader(hashes,delimiter = ',')
hashes = set(col[1] for col in hashes)
hashi= list(hashes)
with open('07.csv') as input_file, open('result072.csv', 'w') as output_file:
reader = csv.reader(input_file,delimiter = ',')
writer = csv.writer(output_file,delimiter = ',')
for row in reader:
if any(item in row for item in hashi):
writer.writerow(row)
解决方案
您需要做的是从 output.csv 文件中获取所有 mmsi 值并逐步执行 07.csv,将每个条目与所有 mmsi 值进行比较。如果匹配,则将该行写入新文件。
我对功能不是很好any
,所以我手动尝试了。
import csv
with open('output.csv') as hashes:
csv_data = csv.reader(hashes, delimiter = ',')
mmsi_set = set(col[1] for col in csv_data)
mmsi_list = list(hashes)
with open('07.csv') as input_file, open('result072.csv', 'w') as output_file:
reader = csv.reader(input_file, delimiter = ',')
writer = csv.writer(output_file, delimiter = ',')
for row in reader:
for mmsi in mmsi_list:
if mmsi == row[4]:
writer.writerow(row)
上述代码应将 07.csv 的任何行写入新文件 result072.csv,其中 output.csv 中的 mmsi 与 07.csv 的 mmsi 匹配
推荐阅读
- java - 未知的“NumberFormatting”问题
- rx-swift - 无法推断通用参数“元素”?
- django - 使用 Nginx 和 Gunicorn 在 Django 中出现奇怪的 CSRF 错误
- vb.net - 具有不同前景色的列表框项
- python - Scrapy - NameError:未定义全局名称'logger'
- java - 如何在活动二(android)中更改活动一中传递的对象的值
- jquery - getJson 不返回文件内容
- php - php sql 服务器连接失败
- c# - 为 ITextSharp 格式化 HTML
- c# - 如何在不下载文件的情况下根据文件扩展名格式打开文件?