我希望.txt文件的每一行都以"结尾,但是文件的编码是gb2312或gbk,因为中文是包含的。因此,我创建了一个名为heheda.txt的文件,其内容如下(每行末尾包含一个返回):
从前有座山"
shan里有个庙
"庙里有个"
laohe尚然后我做了如下尝试:
for line in open('heheda.txt', 'r'):
if not line[-2] == r'"':
print line
line = line[:-1] + r'"' + line[-1:]
print line它还会:
shan里有个庙
shan里有个庙"
laohe尚
laohe�"�我不知道为什么每行的结尾都是line[-2],因为我已经尝试过line.endswith(r'"')和line[-1] == r'"'。第一句得到正确的格式,第二句有错误(�)。
然后,我尝试用rb以二进制模式阅读,这让我再次感到惊讶:
a_file = open(data_path+'heheda.txt', 'rb')
for line in a_file:
if line[-3] != r'"':
print line
line = line[:-2] + r'"' + line[-2:]
print line它还会:
shan里有个庙
shan里有个庙"
laohe尚
laohe�"��这一次,我必须使用line[-3] != r'"'作为判断句子是否以"结尾的条件。我不知道会发生什么。顺便说一下,我在Windows7中使用python2.7.11
有人知道这是怎么回事吗?
发布于 2016-12-11 17:19:05
Windows使用"\r\n"作为换行符,通过文本读取模式自动转换为"\n"。但最后一行没有换行符。
只需去掉换行符,然后测试"
with open('heheda.txt', 'r') as lines:
for line in lines:
line = line.rstrip()
if not line.endswith('"'):
line += '"'
print linehttps://stackoverflow.com/questions/41088627
复制相似问题