我是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')
答案 0 :(得分:0)
您的文件似乎不是csv文件。 csv文件具有分隔符,分隔每列,如下所示:
Name,Item
Andy,Ball
Tom,Car
Zack,Watch
您的文件似乎是固定宽度的文件,特别是上一行中“ C
”中的Car
与“ B
”中的Ball
完美对齐。是否需要使用制表符作为分隔符,并且这些制表符已转换为问题中的空格?
无论如何,如我的示例中那样,如果它是一个用逗号分隔的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))
答案 1 :(得分:0)
一个简单的例子。请注意,由于文件似乎具有标头,因此必须设置分隔符并使用.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]))
答案 2 :(得分:0)
假设您使用的是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()
答案 3 :(得分:0)
如果将Name
和Item
读入两个列表-name
和items
中,则可以执行以下操作以获取所需的输出。
import itertools
name = ["Andy","Tom","Zack"]
items = ["Ball","Car","Watch"]
for i in itertools.product(name,items):
print(i[0]+" has a "+i[1])
输出:
Andy has a Ball
Andy has a Car
Andy has a Watch
Tom has a Ball
Tom has a Car
Tom has a Watch
Zack has a Ball
Zack has a Car
Zack has a Watch
itertools.product提供输入可迭代项的笛卡尔积。