我正在尝试使用csv库读取csv文件。我试图遍历每一行,但在我尝试每行的一些有用函数之前转换为大写。
import csv
reader = csv.DictReader(open('sample.csv', 'rb'))
for line in reader:
line = line.upper()
name = line['Name']
以上代码似乎不起作用。当我尝试将读入的行转换为更高时,它会失败。我可以将读入的csv文件的每一列单独更改为高级(使用字典键),但我想避免这种情况,因为字典中有很多键。
答案 0 :(得分:2)
您可以使用生成器表达式预处理文件对象中的每一行,然后将它们传递给csv.DictReader
,返回一个可迭代的dicts:
with open('sample.csv', 'rb') as f:
header = next(f).strip().split(',')
reader = csv.DictReader((l.upper() for l in f), fieldnames=header)
for line in reader:
name = line['Name']
演示:
>>> f = ['a,b', 'c,d']
>>> c = csv.DictReader((l.upper() for l in f), fieldnames=('h1', 'h2'))
>>> list(c)
[{'h2': 'B', 'h1': 'A'}, {'h2': 'D', 'h1': 'C'}]
答案 1 :(得分:1)
您可以使用:
import codes
txt = 'sampole.csv'
with codecs.open(txt, 'r', encoding='utf-8') as f:
lines = f.readlines()
lines = [x.upper() for x in lines]
lines