我有一个像这样的.txt文件,我想存储到列表中:
'飞机13','巴黎','伦敦',
'飞机471','柏林','马德里',
...
'飞机34','罗马','雅典'
我想连续存储其内容,就像这样
List_Planes = ['Plane 13','Paris','London','Plane 471','Berlin','Madrid',...,'Plane 34','Rome','Athens'] < / p>
如果我这样做
with open('file.txt', 'r') as f:
my_list = [line for line in f]
print my_list
我获得了
[“'飞机13','巴黎','伦敦',\ n”,“'飞机471','柏林','马德里',\ n”,“......,\ n”,“ '飞机34','罗马','雅典'“]
因为输出不是我想要的,我必须删除一些字符(双逗号和输入)。但是,如果我添加行
my_list.remove(',\n')
my_list.remove('"')
我获取 ValueError:list.remove(x):x不在列表中
我在这里做错了什么?我认为可能是单个上部逗号之间的字符存在问题,但如果我删除第二行,则错误仍然存在。
答案 0 :(得分:1)
看起来你有一个csv文件。
您可以像这样创建数据:
import csv
data=[]
with open(fn, 'r') as fin:
reader=csv.reader(fin, quotechar="'")
for row in reader:
data.extend(row)
然后是数据:
>>> data
['Plane 13', 'Paris', 'London', 'Plane 471', 'Berlin', 'Madrid', 'Plane 34', 'Rome', 'Athens']
如果您希望文件的每一行都是自己的子列表(更常见的情况),您可以这样做:
with open(fn, 'r') as fin:
reader=csv.reader(fin, quotechar="'")
data=[row for row in reader]
>>> data
[['Plane 13', 'Paris', 'London'], ['Plane 471', 'Berlin', 'Madrid'], ['Plane 34', 'Rome', 'Athens']]
或者你可以创建一个词典:
data={}
with open (fn, 'r') as fin:
reader=csv.reader(fin, quotechar="'")
for row in reader:
data[row[0]]=row[1:]
>>> data
{'Plane 471': ['Berlin', 'Madrid'], 'Plane 13': ['Paris', 'London'], 'Plane 34': ['Rome', 'Athens']}
如果你真的想从该列表中的每个字符串中删除\n
,你可以这样做:
>>> li=["'Plane 13','Paris','London',\n", "'Plane 471','Berlin','Madrid',\n", "...,\n", "'Plane 34','Rome','Athens'"]
>>> [e.rstrip('\n') for e in li]
["'Plane 13','Paris','London',", "'Plane 471','Berlin','Madrid',", '...,', "'Plane 34','Rome','Athens'"]
答案 1 :(得分:0)
使用CSV builtin。有一个例子here。
基本上:
import csv
with open('data.csv', 'rb') as csvfile:
csvreader = csv.reader(csvfile, delimiter=",", quotechar="'")
for row in csvreader:
# Do whatever you want with the row's elements
print row