猿问

在文本文件中使用带分隔符的文本进行Python操作

我有一个名为“ test.txt”的文本文件,其中包含此格式的行。


a|b|c|d

a1|b1|c1|d1

a2|b2|c2|d2

a3|b3|c3|d3

我的意图是从该文件中读取并给出列表列表。结果将是这样的。


[[a,b,c,d],[a1,b1,c1,d1],[a2,b2,c2,d2],[a3,b3,c3,d3]]

我已经尝试过这种方式:


myfile=open('test.txt','r')

x=myfile.readlines()

mylist=[]

mylist2=[]

mylist3=[]


for i in range(len(x)):   

   mylist.append(x[i])


for i in range(len(mylist)):

    mylist2.append(mylist[i].strip())

    mylist3.append(mylist2[i].split('|'))

print mylist3

即使我的代码可以正常工作,我也想知道是否有更好的方法(最好是更短的方法)吗?


慕慕森
浏览 200回答 2
2回答

猛跑小猪

使用csv模块:import csvwith open('test.txt','rb') as myfile:    mylist = list(csv.reader(myfile, delimiter='|'))即使没有模块,也可以直接拆分行,而无需始终将结果存储在中间列表中:with open('test.txt','r') as myfile:    mylist = [line.strip().split('|') for line in myfile]两种版本均导致:>>> with open('test.txt','rb') as myfile:...     mylist = list(csv.reader(myfile, delimiter='|'))... >>> mylist[['a', 'b', 'c', 'd'], ['a1', 'b1', 'c1', 'd1'], ['a2', 'b2', 'c2', 'd2'], ['a3', 'b3', 'c3', 'd3']]>>> with open('test.txt','r') as myfile:...     mylist = [line.strip().split('|') for line in myfile]... >>> mylist[['a', 'b', 'c', 'd'], ['a1', 'b1', 'c1', 'd1'], ['a2', 'b2', 'c2', 'd2'], ['a3', 'b3', 'c3', 'd3']]

呼如林

您可以str.split在list comprehension此处使用和。with open(test.txt) as f:                                                      lis = [line.strip().split('|') for line in f]    print lis输出:[['a', 'b', 'c', 'd'], ['a1', 'b1', 'c1', 'd1'], ['a2', 'b2', 'c2', 'd2'], ['a3', 'b3', 'c3', 'd3']]
随时随地看视频慕课网APP

相关分类

Python
我要回答