为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕慕森 2021-03-15 16:13:30
我有一个名为“ test.txt”的文本文件,其中包含此格式的行。a|b|c|da1|b1|c1|d1a2|b2|c2|d2a3|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即使我的代码可以正常工作,我也想知道是否有更好的方法(最好是更短的方法)吗?
查看完整描述

2 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

使用csv模块:


import csv


with 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']]



查看完整回答
反对 回复 2021-03-30
?
呼如林

TA贡献1798条经验 获得超3个赞

您可以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']]



查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信