python - 从单独的 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)
解决方案
我强烈建议您在这里使用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,它是一个很棒的库,具有出色的文档和功能。
推荐阅读
- asp.net-core - ASP.Net 核心身份 - 基本登录系统的过度杀伤力?
- spring - Spring Security中的白名单分段文件上传
- android - 如何返回从改造中检索到的值?
- websphere - 如何在 IBM 沃森助手中逃脱插槽?
- firebase - Unity FireBase 实时数据库获取特定密钥的所有子项
- ffmpeg - 有没有办法对由语言管理的多个音频和子流进行编码
- c# - 如何等待下一个串口数据与收集的字节一起附加?
- snowflake-cloud-data-platform - 如果无法触发多个 SQL 语句,如何使用 Snowflake 作为 ETL / ELT 选项?
- python - 如何将 obj 文件加载到 PyOpenGL
- javascript - 在谷歌脚本上使用 forEach 的问题