[英]Python 3, Turning csv file into a dictionary
文件是这样的:
6, 'bird', 'flies', False
它需要按如下顺序排序:
{'bird': (6,'flies', False)}
这是我到目前为止,但没有正确格式化。
{"'bird'": '1'}
我目前的代码:
def read_info_file(filename):
d = {}
count = 0
file = open(filename, "r")
lines = file.readlines()
for line in lines:
split = tuple(line.split(","))
if count > 0:
d[split[1]] = split[0]
count += 1
return d
我也不能在这个问题中导入任何模块。
用Python解析csv
文件通常比它的价值更多。 这是一种解析单个行,使用生成器,同时仍使用csv
模块的简单方法:
码:
import csv
def parse_my_csv(csv_file):
for line in csv_file.readlines():
# replacing comma/space with comma
yield line.replace(", ", ",")
with open('myfile.csv', 'rU') as csvfile:
csv_read = csv.reader(parse_my_csv(csvfile), quotechar="'")
for row in csv_read:
d = {row[1]: (int(row[0]), row[2], bool(row[3]))}
print(d)
结果:
{'bird': (6, 'flies', True)}
下面根据您的格式要求格式化csv。
码:
导入csv
来自pprint import pprint
def过滤器(str):
str = str.strip().strip("'")
return str
def read_info_file(filepath):
try:
res = {}
csvfile = open(filepath,'r')
csv_reader = csv.reader(csvfile)
for row in csv_reader:
res[filter(row[1])] = (int(row[0]),filter(row[2]),bool(row[3]))
except Exception as e:
print("Exception occurred: " + str(e))
finally:
csvfile.close()
return res
res = read_info_file('file.csv')pprint(res)
输出:
{'动物':(7,'苍蝇',真),'鸟':(6,'苍蝇',真),'昆虫':( 8,'苍蝇',真)}
要在没有任何导入模块的情况下执行此操作,您可以使用以下理解:
码:
def read_info_file(filename):
with open(filename, 'rU') as f:
return {row[1]: (int(row[0]), row[2], bool(row[3]))
for row in [
[c.strip().strip("'") for c in line.split(',')]
for line in f.readlines()
]}
测试:
print(read_info_file('myfile.csv'))
结果:
{'bird': (6, 'flies', True)}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.