首页 > 解决方案 > 错误地从文件中删除最后一个字符

问题描述

在我的子进程中,我想从我的 txt 文件中的每一行中删除最后 4 个字符。然而,线条的长度不同。我看过很多页面,包括如何使用 sed 刮掉最后一个字符?但似乎没有什么是正确的。我有大约 100 行,前 38 行没有正确删除前 4 个字符。一个看似随机的数字被删除。在第一行之后,之后的所有行都有我预期的输出。如何?现在我有:

subprocess.run(['sed', 's/.\{4\}$//', 'infile.txt'])

该文件的末尾总是有四个无用的字符 - /pid

3726-weinberg/pid
11717-christopher/pid
11138-span/pid
.
.
.
2932-smith/pid
.
.
.

问题是输出是:

3726-w
11717-chri
111
.
.
.
2932-smith //line 39! all good now
.
.
.

但我期望:

3726-weinberg
11717-christopher
11138-span
.
.
.
2932-smith //line 39! all good now
.
.
.

Sed 不一定是解决方案。如果 truncate 或 cut 或任何其他选项也有效,请随时告诉我。我选择 sed 是因为我在程序的另一部分使用它。

标签: pythonsedsubprocesstruncate

解决方案


也许在 python 中这样做更容易。

with open('infile.txt', 'r') as f:
    lines = f.read()
out = [line[:-4] for line in lines.split('\n')]
with open('infile.txt', 'w') as f:
    f.write('\n'.join(out))

推荐阅读