删除无法正常工作的字符

时间:2014-11-18 11:58:35

标签: python-3.x

我有一个tex文件包含大约1000行像这样:

(1, '0109_S3.p9.m13')
['(n-k)/2']
(2, '0109_S3.p5.m8')
['\\sigma_{i}+\\sigma_{j}']

我想删除偶数行中的前2个和后2个字符,并从奇数行中删除第一个和最后一个字符。 这是我的功能:

def remove_chars(filename):
    with open(filename, 'r') as f0:
        with open('new1.tex', 'a') as f1:
            for num, line in enumerate(f0, 1):
                if num  % 2 == 0:  
                    f1.write(line[2:-2])
                else:
                    f1.write(line[1:-1])
                f1.write('\n')

结果应该是这样的:

1, '0109_S3.p9.m13'
(n-k)/2
2, '0109_S3.p5.m8'
\sigma_{i}+\sigma_{j}

但我明白了:

1, '0109_S3.p9.m13')
(n-k)/2'
2, '0109_S3.p5.m8')
\\sigma_{i}+\\sigma_{j}'

所以它删除了第一个字符而不是最后一个字符。 我看不出来自哪里的问题! 你可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

您的文件行最后包含换行符;你正在删除那个角色。您可能只想将它删除它:

with open('new1.tex', 'a') as f1:
    for num, line in enumerate(f0, 1):
        line = line.rstrip('\n')
        if num  % 2 == 0:  
            f1.write(line[2:-2])
        else:
            f1.write(line[1:-1])
        f1.write('\n')

答案 1 :(得分:0)

这些行最后可能包含行终止符\n。你也应该考虑到这一点。