我是python的新手,并试图在日常任务中使用它,以便更好地使用它。我希望能够从csv文件中获取值,并像下面的示例那样打印。(我能够从csv读取并将输出写入文件。只需要逻辑来做到这一点。)
Name,Item
Andy,Ball
Tom,Car
Zack,Watch
输出应为:
Andy has a Ball
Andy has a Car
Andy has a Watch
Tom has a Ball
Tom has a Car ... etc.
*我的代码。当然,我编辑了实际的语句,这可能没有意义,但这就是代码。我确实创建了一个函数,并缩短了代码。
import csv
with open('../CSV_Files/File.csv') as csvfile:
reader = csv.DictReader(csvfile)
f = open('../Output_Folder/File-1.txt' ,'w')
for row in reader:
f.write("Name is %s, network is %s\n" % (str(row['Name']), str(row['Network'])))
f.close()
with open('../CSV_Files/File.csv') as csvfile:
reader = csv.DictReader(csvfile)
f = open('../Output_Folder/File.txt','a')
for row in reader:
f.write("\n\zone is %s\n" % str(row['Zone']))
f.close()
print ('Done')
发布于 2018-07-13 04:20:07
您的文件似乎不是csv文件。csv文件使用分隔符分隔每一列,如下所示:
Name,Item
Andy,Ball
Tom,Car
Zack,Watch
你的文件看起来是一个固定宽度的文件,特别是上面一行中来自"Car
“的C
如何与来自"Ball
”的B
完美地对齐。除非你用制表符作为分隔符,而且它们在问题中被转换为空格?
无论如何,如果它是一个用逗号分隔的csv文件,如我的示例所示:
with open('myfile.csv') as f:
cf = csv.DictReader(f)
for row in cf:
print('{Name} has a {Item}'.format(**row))
如果用制表符分隔,只需使用
cf = csv.DictReader(f, delimiter='\t')
现在,固定宽度更难了,因为你必须知道宽度,就像这样:
with open('myfile.csv') as f:
for line in f:
line = line.strip()
name = line[:5]
item = line[6:]
print('{} has a {}'.format(name, item))
发布于 2018-07-13 04:28:48
这只是一个简单的例子。注您必须设置分隔符,并使用.readline()跳过第一行,因为您的文件似乎有标题。
import csv
with open('C:\\file.csv', 'r') as csvfile:
reader = csv.reader(csvfile, delimiter=',')
csvfile.readline()
for row in reader:
print(str(row[0]) + ' has a ' + str(row[1]))
发布于 2018-07-13 04:32:06
假设您使用的是python 3.7以及要输出到同一目录中的内容
import csv
myfile = open("output.txt", "w")
with open('yourfile.csv', newline='') as csvfile:
spamreader = csv.reader(csvfile, delimiter=',')
for row in spamreader:
mystr = spamreader[i] + "has a "+ spamreader[i+1]
myfile.write(mystr + "\n")
myfile.close()
https://stackoverflow.com/questions/51313754
复制相似问题