首页 > 解决方案 > 从单独的 csv 文件中获取值并替换管道分隔文件中的列值

问题描述

试图在 python 中解决这个问题。长话短说,我得到了一个 csv 文件,其中包含我需要注入到另一个以管道分隔的文件中的列数据。我的理解是python不能替换值,所以我必须用新值重写整个文件。

数据文件(csv):
value1,value2,iwantthisvalue3

源文件(txt,| 分隔)
value1|value2|iwanttoreplacethisvalue3|value4|value5|etc

固定文件(txt,|分隔)
samevalue1|samevalue2| 替换值3|值4|值5|等

我不知道如何做到这一点。这是我最近的尝试(损坏的代码):

import re
import csv

result = []
row = []
with open("C:\data\generatedfixed.csv","r") as data_file:
    for line in data_file:
        fields = line.split(',')
        result.append(fields[2])

with open("C:\data\data.txt","r") as source_file, with open("C:\data\data_fixed.txt", "w") as fixed_file:
    for line in source_file:
        fields = line.split('|')
        n=0
        for value in result:
            fields[2] = result[n]
            n=n+1
        row.append(line)
    for value in row
       fixed_file.write(row)
        

标签: pythoncsv

解决方案


我强烈建议您在这里使用pandas包,它使处理表格数据变得非常容易,并且在这种情况下对您有很大帮助。安装 pandas 后,使用以下命令将其导入:

import pandas as pd

要读取文件,只需使用:

data_file = pd.read_csv("C:\data\generatedfixed.csv")
source_file = pd.read_csv('C:\data\data.txt', delimiter = "|")

之后操作这两个文件很容易,我不确定要替换多少个值或哪些值,但如果“iwantthisvalue3”和“iwanttoreplacethisvalue3”的长度相同,那么这应该可以解决问题:

source_file['iwanttoreplacethisvalue3'] = data_file['iwantthisvalue3]

现在您需要做的就是将数据框(我们刚刚更新的表格)保存到一个文件中,因为您想用“|”将它保存到一个 .txt 文件中 作为分隔符,这是执行此操作的行(但是您可以自定义如何以多种方式保存它):

source_file.to_csv("C:\data\data_fixed.txt", sep='|', index=False)

如果一切正常,请告诉我,这对您有帮助。如果您打算使用表格数据,我还鼓励您阅读(或观看一些视频)pandas,它是一个很棒的库,具有出色的文档和功能。


推荐阅读