我有一个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}'
所以它删除了第一个字符而不是最后一个字符。 我看不出来自哪里的问题! 你可以帮忙吗?
答案 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
。你也应该考虑到这一点。