python菜鸟入门求助[已解决]
本帖最后由 ly123 于 2020-6-9 11:13 编辑最近刚开始学Python,跟着做实例的时候和讲课的代码一样但是还是报错,不知道怎么改进,还望大佬指点{:1_936:}
代码:
def main():
f1=open('teleAddressBook.txt','rb')
f2=open('emailAddressBook.txt','rb')
f1.readline()
f2.readline()
lines1=f1.readlines()
lines2=f2.readlines()
dic1=[]
dic2=[]
for line in lines1:
elements = line.split()
dic1]=str(elements.decode('utf-8'))
for line in lines2:
elements = line.split()
dic2]=str(elements.decode('utf-8'))
lines=[]
lines.append('姓名\t 电话 \t 邮箱\n')
for key in dic1:
s=''
if key in dic2.keys():
s='\t'.join(,dic2])
s+='\n'
else:
s='\t'.join(,str('----------')])
s+='\n'
lines.append(s)
for key in dic2:
s=''
if key not in dic1.keys():
s='\t'.join(])
s+='\n'
lines.append(s)
f3=open('AddressBook1.txt','w')
f3.writelines(lines)
f3.close()
f2.close()
f1.close()
print('The AddressBooks are merged!')
if __name__ == '__main__':
main()
-------------------------------------------------------
报错: dic1]=str(elements.decode('utf-8'))
TypeError: list indices must be integers or slices, not bytes
我也查过网上的,说改成int也不行。{:1_924:} 小白不懂应该怎么改,先谢谢各位!
感谢各位,是我太粗心了。字典应该是{},误用了[]。:shutup: f1=open('teleAddressBook.txt','rb')->
f1=open('teleAddressBook.txt','r').
不要用二进制读取 pzx521521 发表于 2020-6-9 10:55
f1=open('teleAddressBook.txt','rb')->
f1=open('teleAddressBook.txt','r').
不要用二进制读取
感谢回复,但是又报新错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 34: illegal multibyte sequence。 里面有中文名字 索引的值错了,应该是int类型,考虑一下转换吧。 ly123 发表于 2020-6-9 11:01
感谢回复,但是又报新错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 34: ill ...
文件发一下... dic1=[]
dic2=[]
应该是字典类型才对,用{}(花括号)
你仔细核对实例代码,一定你写错了,包括后面程序的括号,不是二进制的问题 Python2 吗,Python2 的话在文件最上面把这三行加上试一试:
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
pzx521521 发表于 2020-6-9 11:03
文件发一下...
姓名 电话号码
王颐茄 13691177890
张三 13529293939
李斯 15811589981
桑迪 13010026896
utf-8编码的 XAWAN 发表于 2020-6-9 11:05
dic1=[]
dic2=[]
应该是字典类型才对,用{}(花括号)
信我,一定是这个问题
dic1={}
dic2={} XAWAN 发表于 2020-6-9 11:08
信我,一定是这个问题
dic1={}
dic2={}
{:1_932:} 解决了,就是{}的问题,是我太粗心了。感谢!
页:
[1]
2