读取 csv 数据,然后在特定位置附加带有值的文本文件
Read csv data, then append text file with values at specific places
我刚刚开始学习 Python,并没有很好地掌握 Python 中使用的所有功能和方法。希望有人能在这方面给我指点。
问:我正在尝试读取包含多行 x、y 和 z 数据的 CSV 文件。然后我需要获取这些读取值并将它们替换到特定位置的文本文件中。
我可以使用 csv.reader 来读取文件,但我很难找到正确的函数来在我的文本文件中搜索和附加数据。
CSV 文件包含;
X Y Z
1 x1 y1 z1
2 x2 y2 z2
3 x3 y3 z3
文本文件包含:
This is first text line.
The data goes here x1 with y1 and z1
also goes here x2 wtih y2 and z2.
作为第一步,我在将数据写入新文本文件方面取得了一些进展:
import csv
testfile = open('Data.csv', "rb")
reader = csv.reader(testfile)
rownum = 0
file=open("detdata.txt", "w")
for row in reader:
# Save header row.
if rownum == 0:
*
*
脑残、脆弱、低效且未经测试的解决方案:
source = open("/path/to/textfile.txt").read()
keys = ("x", "y", "z")
reader.next() # discard the headers row
for num, row in enumerate(reader, 1):
for key, val in zip(keys, row):
varname = "{0}{1}".format(key, num)
source = source.replace(varname, val)
更好的解决方案是在文本文件中使用带有 Python 字符串格式标记的模板字符串,即:
This is first text line.
The data goes here {x1} with {y1} and {z1}
also goes here {x2} wtih {y2} and {z2}.
然后将 varname
:values
对收集在 dict
中并使用 str.format()
:
data = dict()
keys = ("x", "y", "z")
reader.next() # discard the headers row
for num, row in enumerate(reader, 1):
for key, val in zip(keys, row):
varname = "{0}{1}".format(key, num)
data[varname] = val
source = open("/path/to/textfile.txt").read()
result = source.format(**data)
但请注意,如果文本中有占位符而 dict
中没有匹配的键,则会出现错误。
我刚刚开始学习 Python,并没有很好地掌握 Python 中使用的所有功能和方法。希望有人能在这方面给我指点。
问:我正在尝试读取包含多行 x、y 和 z 数据的 CSV 文件。然后我需要获取这些读取值并将它们替换到特定位置的文本文件中。
我可以使用 csv.reader 来读取文件,但我很难找到正确的函数来在我的文本文件中搜索和附加数据。
CSV 文件包含;
X Y Z
1 x1 y1 z1
2 x2 y2 z2
3 x3 y3 z3
文本文件包含:
This is first text line.
The data goes here x1 with y1 and z1
also goes here x2 wtih y2 and z2.
作为第一步,我在将数据写入新文本文件方面取得了一些进展:
import csv
testfile = open('Data.csv', "rb")
reader = csv.reader(testfile)
rownum = 0
file=open("detdata.txt", "w")
for row in reader:
# Save header row.
if rownum == 0:
*
*
脑残、脆弱、低效且未经测试的解决方案:
source = open("/path/to/textfile.txt").read()
keys = ("x", "y", "z")
reader.next() # discard the headers row
for num, row in enumerate(reader, 1):
for key, val in zip(keys, row):
varname = "{0}{1}".format(key, num)
source = source.replace(varname, val)
更好的解决方案是在文本文件中使用带有 Python 字符串格式标记的模板字符串,即:
This is first text line.
The data goes here {x1} with {y1} and {z1}
also goes here {x2} wtih {y2} and {z2}.
然后将 varname
:values
对收集在 dict
中并使用 str.format()
:
data = dict()
keys = ("x", "y", "z")
reader.next() # discard the headers row
for num, row in enumerate(reader, 1):
for key, val in zip(keys, row):
varname = "{0}{1}".format(key, num)
data[varname] = val
source = open("/path/to/textfile.txt").read()
result = source.format(**data)
但请注意,如果文本中有占位符而 dict
中没有匹配的键,则会出现错误。