我刚开始使用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:
*
*
答案 0 :(得分:0)
Braindead,脆弱,低效和未经测试的解决方案:
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
中没有匹配的键,则会出现错误。