python - 错误地从文件中删除最后一个字符
问题描述
在我的子进程中,我想从我的 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 是因为我在程序的另一部分使用它。
解决方案
也许在 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))
推荐阅读
- python-2.7 - 使用 Pillow 和 OpenCV 加载的 JPEG 文件是不同的。这是实时图像处理的问题吗?
- vuejs2 - 没有 Webpack 的 Vuejs 多组件
- javascript - 在 jQuery DataTable 中创建多个搜索栏
- r - 在连接期间保留两个数据表中的所有列,然后添加一列
- sql - 每个用户 ID 的 first_value 和 last_value
- c# - 发布新版本时,正在运行的 Azure 函数是完成还是终止?
- vba - VBA 导入 CSV 以访问
- python - Python二维列表
- java - 为什么 Collections.max() 方法不支持 Set
> - css - 图像不使用文本之类的类