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

时间:2010-09-03 12:09:43

标签: python

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

2 个答案:

答案 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