首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果文件没有以r‘“结尾,我如何将r’”添加到文件的每一行

如果文件没有以r‘“结尾,我如何将r’”添加到文件的每一行
EN

Stack Overflow用户
提问于 2016-12-11 16:53:52
回答 1查看 143关注 0票数 0

我希望.txt文件的每一行都以"结尾,但是文件的编码是gb2312gbk,因为中文是包含的。因此,我创建了一个名为heheda.txt的文件,其内容如下(每行末尾包含一个返回):

代码语言:javascript
复制
从前有座山"
shan里有个庙
"庙里有个"
laohe尚

然后我做了如下尝试:

代码语言:javascript
复制
for line in open('heheda.txt', 'r'):
    if not line[-2] == r'"':
        print line
        line = line[:-1] + r'"' + line[-1:]
        print line

它还会:

代码语言:javascript
复制
shan里有个庙

shan里有个庙"

laohe尚
laohe�"�

我不知道为什么每行的结尾都是line[-2],因为我已经尝试过line.endswith(r'"')line[-1] == r'"'。第一句得到正确的格式,第二句有错误()。

然后,我尝试用rb以二进制模式阅读,这让我再次感到惊讶:

代码语言:javascript
复制
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

它还会:

代码语言:javascript
复制
shan里有个庙

shan里有个庙"

laohe尚
laohe�"��

这一次,我必须使用line[-3] != r'"'作为判断句子是否以"结尾的条件。我不知道会发生什么。顺便说一下,我在Windows7中使用python2.7.11

有人知道这是怎么回事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-11 17:19:05

Windows使用"\r\n"作为换行符,通过文本读取模式自动转换为"\n"。但最后一行没有换行符。

只需去掉换行符,然后测试"

代码语言:javascript
复制
with open('heheda.txt', 'r') as lines:
    for line in lines:
        line = line.rstrip()
        if not line.endswith('"'):
            line += '"'
        print line
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41088627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档