我试图在python中逐行阅读这个简单的文件:
q(A) p(B)
q(z) ∼p(x)
然后从每一行中删除newline
,然后将其添加到列表中。
lst = []
f = open("input.txt", 'r')
t1 = f.readline().rstrip('\n')
t2 = f.readline().rstrip('\n')
lst.append(t1)
lst.append(t2)
print lst
问题是,当我打印列表的内容时,我得到以下输出:
['q(A) p(B)', 'q(z) \xe2\x88\xbcp(x)']
我的文件包含波浪号~
,我认为这会导致这种行为。奇怪的是,如果我要打印t1
和t2
的内容,它们会正常显示,但打印lst
的内容会显得不同
编辑:回答
好吧,我设法得到了我所期望的。如果有人遇到同样的问题,可以参考这个解决方案:
import codecs
f = codecs.open("input2.txt", 'r', encoding='utf8')
lst = []
t1 = f.readline().rstrip('\n')
t2 = f.readline().rstrip('\n')
res1 = ""
res2 = ""
for i in xrange(0,len(t1)):
if ord(t1[i]) == 8764:
res1 += "~"
else:
res1 += chr(ord(t1[i]))
for i in xrange(0,len(t2)):
if ord(t2[i]) == 8764:
res2 += "~"
else:
res2 += chr(ord(t2[i]))
lst.append(res1)
lst.append(res2)
print lst
现在输出如下:
['q(A) p(B)', 'q(z) ~p(x)']