我有一个具有以下格式的csv文件:
#ID #Number #Date #Name #Email
1978 26 24/4/10 Jim Jim@randomemail.com
1328 31 22/7/10 Jim Kim@randomemail.com
1908 26 21/4/10 Jim Dim@randomemail.com
1918 26 29/4/10 Jim Rim@randomemail.com
1938 46 24/4/10 Jim Lim@randomemail.com
我已打开csv文件并已将其打印出来。
我现在要制作成字典,例如: [ID:1978,号码:26,日期:24/4/10,姓名:吉姆,电子邮件: Jim@randomemail.com],[等],[等]
我知道这可能很容易,但是我是新手,已经被困了几个小时。
答案 0 :(得分:4)
在评论之后,请考虑以下内容:
import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
for row in reader:
print(row)
输出:
OrderedDict([('#ID', '1978'), ('#Number', '26'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Jim@randomemail.com')]) OrderedDict([('#ID', '1328'), ('#Number', '31'), ('#Date', '22/7/10'), ('#Name', 'Jim'), ('#Email', 'Kim@randomemail.com')]) OrderedDict([('#ID', '1908'), ('#Number', '26'), ('#Date', '21/4/10'), ('#Name', 'Jim'), ('#Email', 'Dim@randomemail.com')]) OrderedDict([('#ID', '1918'), ('#Number', '26'), ('#Date', '29/4/10'), ('#Name', 'Jim'), ('#Email', 'Rim@randomemail.com')]) OrderedDict([('#ID', '1938'), ('#Number', '46'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Lim@randomemail.com')])
要使您的变量空间分隔文件正确解析,必须使用DictReader
的两个额外参数。
或者,如果您想要一次所有行,则类似:
import csv
with open('file.txt', 'r') as f:
reader = csv.DictReader(f, delimiter=' ', skipinitialspace=True)
rows = list(reader)
print(rows)
产生
[ OrderedDict([('#ID', '1978'), ('#Number', '26'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Jim@randomemail.com')]), OrderedDict([('#ID', '1328'), ('#Number', '31'), ('#Date', '22/7/10'), ('#Name', 'Jim'), ('#Email', 'Kim@randomemail.com')]), OrderedDict([('#ID', '1908'), ('#Number', '26'), ('#Date', '21/4/10'), ('#Name', 'Jim'), ('#Email', 'Dim@randomemail.com')]), OrderedDict([('#ID', '1918'), ('#Number', '26'), ('#Date', '29/4/10'), ('#Name', 'Jim'), ('#Email', 'Rim@randomemail.com')]), OrderedDict([('#ID', '1938'), ('#Number', '46'), ('#Date', '24/4/10'), ('#Name', 'Jim'), ('#Email', 'Lim@randomemail.com')]) ]
和
print(rows[0]["#Email"])
产生
Jim@randomemail.com
更新
如果文件实际上是用 tab 分隔的,则可以使用:
reader = csv.DictReader(f, delimiter='\t')
您应该能够通过打印行来分辨定界符(如您所知),但是可以将其包装在repr
调用中-类似于print(repr(line))
。如果您在输出中看到\t
,则以制表符分隔。
答案 1 :(得分:1)
这里有一些用纯python编写的代码可以解决这个问题:
for line in file_contents_2:
line_contents = line.strip().split(",") # Removes the \n,
# then turns the line into a list, where each value is seperated
# by the comma
the_dictionary = {}
reference = ["ORIN","DEST","HORIZ","BEAR"]
for i in range(4): # iterates i=0 to i=3
# Arrays start at 0, so a=[1,2,3]; a[1] would return 2
the_dictionary[reference[i]] = line_contents[i]
dictionary_list.append(the_dictionary)
答案 2 :(得分:0)
使用熊猫会让您的生活更轻松:
npm run build
就是这样,npm run build:prod
中有一些可选参数可以帮助您以所需的方式设置其格式。