poem = '''\
me:hello dear
me:hyyy
asha:edaaaa
'''
f=open('poem.txt','r')
arr=[]
arr1=[]
varr=[]
darr=[]
i=0
j=1
for line in f.read().split('\n'):
arr.append(line)
i+=1
f.close()
#print arr[0]
#print arr[1]
#print arr[2]
text=arr[0].split(':')
#print text
line=text[0]
#print line
arr1.append(text[1])
for i in range(1,len(arr)):
text=arr[i].split(':')
if(line==text[0]):
#print text[1]
arr1.append(text[1])
else:
if(j==1):
j+=1
varr[j]=text[0] # this is not working
darr[j]=text[1]
print len(varr)
f.close()
print arr1
答案 0 :(得分:5)
CRYSTAL BALL MODE
from collections import defaultdict
result = defaultdict(list)
with open('chat.log') as f:
for line in f:
nick, msg = line.split(':', 1)
result[nick].append(msg)
print result
答案 1 :(得分:0)
您正在尝试分配给varr[2]
,但varr
是一个空列表,因此您会收到索引错误
有很多方法可以修复此代码,但我不清楚代码应该做什么
诺斯克罗的回答对我来说似乎很合理,直到我再考虑一下。我不确定通过名称对行进行分组有多大意义,因为这意味着文件的整体结构会丢失。
以下是如何简单地将文件解析为list
,以后可以操作
result = []
with open('poem.txt') as f:
for line in f:
result.append(line.partition(':')[::2])
print result