Python 解析存储在文件中的聊天对话

Python 解析存储在文件中的聊天对话,python,Python,您正试图分配给varr[2],但varr是一个空列表,因此您将得到一个索引错误 有很多方法可以修复此代码,但我不清楚代码应该做什么 Nosklo的回答在我看来似乎是合理的,直到我进一步思考。我不确定按名称对行进行分组有多大意义,因为这意味着文件的整体结构丢失 下面是如何简单地将文件解析为一个列表,您可以稍后对其进行操作 poem = '''\ me:hello dear me:hyyy asha:edaaaa ''' f=open('poem.txt','r') arr=[] arr1=[]

您正试图分配给
varr[2]
,但
varr
是一个空列表,因此您将得到一个索引错误

有很多方法可以修复此代码,但我不清楚代码应该做什么

Nosklo的回答在我看来似乎是合理的,直到我进一步思考。我不确定按名称对行进行分组有多大意义,因为这意味着文件的整体结构丢失

下面是如何简单地将文件解析为一个
列表
,您可以稍后对其进行操作

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

水晶球模式开启

result = []
with open('poem.txt') as f:
    for line in f:
        result.append(line.partition(':')[::2])

print result

我怀疑(不确定)OP试图读取行并根据行的一部分(我猜是用户名)将它们收集到不同的数组中。@Manoj,你可能是对的,nosklo似乎同意。我不知道为什么第一行会被特别处理,或者不同的arr、varr、darr代表什么。你没有在最后关闭水晶球模式!谁知道你可能会留下什么未解决的参考资料@丹尼尔·罗斯曼:垃圾收集器应该自动关闭:)+1使用水晶球。除此之外,我的评论与答案无关,与不清楚@anu希望解决什么问题有关。我不确定尼克的邮件索引真的能给你带来什么。首先,消息的顺序,包括相对于其他nick消息的顺序,可能很重要。我看不出这段代码的结果结构有什么用处。那么这是什么课程的家庭作业?
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