尝试比较两个 csv 文件并将差异写入输出

2024-01-09

我正在开发一个脚本,它获取 2 个 csv 文件之间的差异,并生成一个新的 csv 文件作为具有差异的输出,但前提是两个输入文件之间的相同 2 行(指行号)包含不同的数据,例如文件 1 中的第 3 行有“mike”、“篮球运动员”,文件 2 中的第 3 行有“mike”、“棒球运动员”。输出 csv 将抓取这些打印并将它们写入 csv。它有效,但存在一些问题(我知道这个问题之前也被问过几次,但其他人对我的做法不同,而且由于我对编程相当陌生,我不太理解他们的代码)。

新的 csv 文件中的输出在每个单元格中都有输出的每个字母(见下图),我相信它与分隔符/quotechar/引用行 37 有关。我希望它们在自己的单元格中,没有任何句号,多个空格、逗号或“|”。

另一个问题是运行时间较长。我正在处理多达 50,000 行的数据集,运行可能需要一个多小时。为什么会这样?什么建议有助于加快速度?也许在 for 循环之外放一些东西?我之前确实尝试过 difflib 方法,但我只能打印整个“input_file1”,但无法将该文件与另一个文件进行比较。

# aim of script is to compare csv files and output difference as a new csv

# import necessary libraries
import csv

# File1 = open(raw_input("path:"),"r") #filename, mode
# File2 = open(raw_input("path:"),"r") #filename, mode

# selects the 2 input files to be compared
input_file1 = "G:/savestuffhereqwerty/electorate_meshblocks/teststuff/Book1.csv"
input_file2 = "G:/savestuffhereqwerty/electorate_meshblocks/teststuff/Book2.csv"
# creates the blank output csv file
output_path = "G:/savestuffhereqwerty/electorate_meshblocks/outputs/output2.csv"
a = open(input_file1, "r")
output_file = open(output_path,"w")
output_file.close()
count = 0

with open(input_file1) as fp1:


    for row_number1, row_value1 in enumerate(fp1):
        if row_number1 == count:
            print "got to 1st point"
            value1 = row_value1

            with open(input_file2) as fp2:
                for row_number2, row_value2 in enumerate(fp2):
                    if row_number2 == count:
                        print "got to 2nd point"
                        value2 = row_value2

                        if value1 == value2:
                            print value1, value2
                        else:
                            print value1, value2
                            with open(output_path, 'wb') as f:
                                writer = csv.writer(f, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
                                # testing to see if the code writes text to the csv
                                writer.writerow(["test1"])
                                writer.writerow(["test2", "test3", "test4"])
                                writer.writerows([value1, value2])
                                print "code reached writing stage"
        count += 1
        print count
print "done"
# replace(",",".")

由于您想逐行比较两个文件,因此应该not循环遍历第二个文件every第一个文件中的行。您可以简单地zip https://docs.python.org/2/library/functions.html#zip两个 csv 阅读器并过滤行:

input_file1 = "foo"
input_file2 = "bar"
output_path = "baz"

with open(input_file1) as fin1:
  with open(input_file2) as fin2:
    read1 = csv.reader(fin1)
    read2 = csv.reader(fin2)
    diff_rows = (row1 for row1, row2 in zip(read1, read2) if row1 != row2)
    with open(output_path, 'w') as fout:
      writer = csv.writer(fout)
      writer.writerows(diff_rows)

此解决方案假设两个文件具有相同的行数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试比较两个 csv 文件并将差异写入输出 的相关文章

  • 如何传递架构以从现有数据帧创建新数据帧?

    要将 schema 传递到 json 文件 我们这样做 from pyspark sql types import StructField StringType StructType IntegerType data schema Stru
  • Gunicorn 工作人员无论如何都会超时

    我正在尝试通过gunicorn运行一个简单的烧瓶应用程序 但是无论我做什么 我的工作人员都会超时 无论是否有针对应用程序的活动 工作人员在我设置任何内容后总是会超时timeout值到 是什么导致它们超时 当我发出请求时 请求成功通过 但工作
  • 如何在 __init__ 中使用await设置类属性

    我如何定义一个类await在构造函数或类体中 例如我想要的 import asyncio some code class Foo object async def init self settings self settings setti
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • Python 内置的 super() 是否违反了 DRY?

    显然这是有原因的 但我没有足够的经验来认识到这一点 这是Python中给出的例子docs http docs python org 2 library functions html super class C B def method se
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • 使用 Python Oauthlib 通过服务帐户验证 Google API

    我不想使用适用于 Python 的 Google API 客户端库 但仍想使用 Python 访问 Google APIOauthlib https github com idan oauthlib 创建服务帐户后谷歌开发者控制台 http
  • 通过Python连接到Bigquery:ProjectId和DatasetId必须非空

    我编写了以下脚本来通过 SDK 将 Big Query 连接到 Python 如下所示 from google cloud import bigquery client bigquery Client project My First Pr
  • Python - 如何确定解析的 XML 元素的层次结构级别?

    我正在尝试使用 Python 解析 XML 文件中具有特定标记的元素并生成输出 excel 文档 该文档将包含元素并保留其层次结构 我的问题是我无法弄清楚每个元素 解析器在其上迭代 的嵌套深度 XML 示例摘录 3 个元素 它们可以任意嵌套
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • Spider 必须返回 Request、BaseItem、dict 或 None,已“设置”

    我正在尝试从以下位置下载所有产品的图像 我的蜘蛛看起来像 from shopclues items import ImgData import scrapy class multipleImages scrapy Spider name m
  • 如何将 Django 中的权限添加到模型并使用 shell 进行测试

    我在模型中添加了 Meta 类并同步了数据库 然后在 shell 中创建了一个对象 它返回 false 所以我真的无法理解错误在哪里或者缺少什么是否在其他文件中可能存在某种配置 class Employer User Employer in
  • 在virtualenv中下载sqlite3

    我正在尝试使用命令创建应用程序python3 manage py startapp webapp但我收到一条错误消息 django core exceptions ImproperlyConfigured 加载时出错 pysqlite2 或
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并
  • python 对浮点数进行不正确的舍入

    gt gt gt a 0 3135 gt gt gt print 3f a 0 314 gt gt gt a 0 3125 gt gt gt print 3f a 0 312 gt gt gt 我期待 0 313 而不是 0 312 有没有

随机推荐

  • 如何在 python 中将列表列表转换为集合以便我可以与其他集合进行比较?

    我有一个清单users with invites ids list 由我将值附加到列表的循环形成 在 python 中如下所示 ObjectId 55119e14bf2e4e010d8b48f2 ObjectId 54624128bf2e4
  • 布局:如何在垂直布局中使一个小部件是其余小部件的 3 倍

    我有 3 个垂直布局的表格 A B 和 C 这 3 个表格的大小策略 水平和垂直 设置为扩展 如何使表 A 的大小成为 B 和 C 的 3 倍 并始终保持该比例 我通过 QT Designer 来完成此操作 Update 为了测试布局拉伸方
  • Telegram 机器人:如何通过 ID(而不是用户名)提及用户

    我正在创建一个电报机器人并使用sendMessage发送消息的方法 很容易提及用户使用 username 但是当用户没有用户名时如何提及用户呢 如果使用电报应用程序 网络 我们可以通过以下方式提及用户 integer id name 而 t
  • C# 中四舍五入到小数点后两位

    如何将两位小数相乘并将结果四舍五入到小数点后两位 例如 如果方程为 41 75 x 0 1 则结果将为 4 175 如果我在 C 中使用小数执行此操作 它将自动四舍五入到 4 18 我想四舍五入到 4 17 我尝试使用 Math Floor
  • 打开像 Whatsapp 这样的对话框时显示动画?

    我想打开用户信息的对话框并显示动画 就像 Whatsapp 所做的那样 任何想法 先感谢您 看看这个开源库FabDialogMorph https github com hujiaweibujidao FabDialogMorph Here
  • 将 Json 映射到 Angular 对象

    我有以下 JSON 数据 columns table black list name id datatype uuid table black list name emailid datatype varchar table black l
  • SQL 帮助:使用嵌套 SELECT 计算单个查询中的行数

    我正在寻找一种更好的方法来执行以下查询 我有一个看起来像这样的表 game id home team id away team id 1 100 200 2 200 300 3 200 400 4 300 100 5 100 400 我想编
  • 在 AWS ECS 上的 Docker 映像中运行 CloudWatch Agent 失败

    对于这个问题 我对 Docker 和 AWS 还比较陌生 目标是创建一个使用基本 Laravel 应用程序运行 Apache 和 PHP 的单个 AWS ECS 实例 我想运行 CloudWatch 代理将所有日志发送到 CloudWatc
  • 在 Ajax 查询中使用预输入时出现 ember-select-2 问题

    我在用着余烬 选择 2 https istefo github io ember select 2 examples作为 ember 应用程序中的预输入 问题是我可以从服务器获取数据 但数据没有显示在下拉列表中 任何帮助将不胜感激 提前致谢
  • R 中 Stata 的 xtlogit (fe, re) 等效项?

    Stata 允许通过以下方式指定逻辑回归的固定效应和随机效应xtlogit http www stata com manuals13 xtxtlogit pdf fe and xtlogit http www stata com manua
  • 如何在 Atom 中替换换行符?

    在 Atom 中 如果我在搜索和替换工具上激活正则表达式模式 它可以找到换行符 n 但是当我尝试替换它们时 它们仍然存在 有没有办法替换 Atom 中的换行符字符串 看起来 Atom 匹配换行符为 r n但仅替换时表现不一致 n什么也没有
  • Visual Studio 生成的 Dockerfile 不适用于手动 docker 构建

    我想对现有的 NET core 5 应用程序进行 dockerize 并使用容器工具生成 Dockerfile 当我使用 Visual Studio 2022 进行调试时 它可以工作 但是当我使用命令手动运行它时docker build t
  • 如何用Python同时记录鼠标和键盘的移动?

    我想创建一个函数来记录鼠标和键盘事件 直到按下特定的键 然后一起重播它们 我认为这可以通过keyboard and mouse模块 在之前的一个问题中 我问过如何记录按下按键之前的鼠标移动 https stackoverflow com q
  • 带有透明居中箭头的边框

    我正在尝试用 a 来设计 div 的样式具有向下箭头的底部边框 div 中将包含图像 并且不应有上边框 右边框或左边框 向下箭头的填充应该与 div 相同或透明 我已经能够使用下面的代码让它大部分工作 hero position relat
  • 无法在节点和运行时之间转换参数“tx”:解码字段调用时出错

    当我想使用基于基板的链中内置的方法以及自定义类型时 我收到以下错误 2020 04 13 21 03 01 RPC CORE submitAndWatchExtrinsic extrinsic Extrinsic ExtrinsicStat
  • 图 - 具有顶点权重的最短路径

    这是一个消费税 在某些图问题中 顶点可以有权重而不是 或者除了边的权重之外 设 Cv 为顶点的成本 v 和 C x y 边 x y 的成本 这个问题大家关心 寻找图 G 中顶点 a 和 b 之间最便宜的路径 路径的成本是边和顶点的成本之和
  • 使用 ImageDataGenerator 时的 Keras 分割训练测试集

    我有一个目录 其中包含图像的子文件夹 根据标签 我想在 Keras 中使用 ImageDataGenerator 时将这些数据拆分为训练集和测试集 虽然 keras 中的 model fit 有用于指定分割的参数validation spl
  • 一级缓存和二级缓存有什么区别?

    我知道l1和l2缓存是多级缓存中的级别 我想知道每一级缓存放置在哪里 以及允许的最大缓存级别是多少 这两者都取决于CPU 有些CPU根本没有高速缓存 有些CPU在芯片上有L1高速缓存 而L2高速缓存在同一芯片上的单独芯片上 甚至在单独的芯片
  • 如何将图像文件保存在 Postgres 数据库上?

    出于学习目的 我正在使用 Python Flask 创建一个网站 我想从数据库中恢复图像并将其显示在屏幕上 但一步一步来 我首先不知道如何将图像保存在我的数据库中 我的搜索只显示我必须使用bytea输入我的数据库 然后我得到我的图像并以某种
  • 尝试比较两个 csv 文件并将差异写入输出

    我正在开发一个脚本 它获取 2 个 csv 文件之间的差异 并生成一个新的 csv 文件作为具有差异的输出 但前提是两个输入文件之间的相同 2 行 指行号 包含不同的数据 例如文件 1 中的第 3 行有 mike 篮球运动员 文件 2 中的