python - 如何从 txt 文件中删除特定行和以下 n 行?
问题描述
我正在创建一个程序来更新一个包含城市列表的文本文件:
New York City
New York
USA
Newark
New Jersey
USA
Toronto
Ontario
Canada
如果我想使用 bash 脚本删除 Newark 的详细信息,我可以这样做:
sed -i "/Newark/,+3d" test.txt
这将给我留下以下内容:
New York City
New York
USA
Toronto
Ontario
Canada
但是,我想在 Python 中执行此操作,并且在与 Newark 的行之后,我在弄清楚如何删除以下行时遇到了问题。我可以删除纽瓦克:
with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
for line in oldfile:
if not "Newark" in line:
newfile.write(line)
os.remove('test.txt')
os.rename('test2.txt', 'test.txt')
但这对剩下的两行没有任何作用,而是创建了一个新文件,然后我必须用它来替换原始文件。
- 如何使用 Python 模拟 sed 命令的功能?
- 有什么方法可以进行文件内编辑,因此我不必每次需要从中删除文件时都创建和替换文件?
解决方案
带柜台?这里是:
with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
skip = 0
for line in oldfile:
if "Newark" in line:
skip = 3
elif skip > 0:
skip = skip - 1
else:
newfile.write(line)
编辑:
我只回答了第一个问题。fileinput支持文件编辑,请看这里:如何搜索和替换文件中的文本? 顺便说一句,我也会推荐就地,因为它不会劫持标准输出
推荐阅读
- python - 无法使用 Sci-Kit Learn 分类输入器
- javascript - React Native 如何通过图标打开抽屉
- python - BeautifulSoup 只找到类中的第一个元素
- javascript - 使用谷歌脚本填充谷歌表格中的特定列
- sql - AspNet DataSet TableAdapter 似乎不会在回发之间刷新数据,直到页面刷新
- iis - 如何从 IIS 提供简单的平面文件
- r - 缩短r中的重复表达式
- r - Max R 版本的机器学习服务器
- reactjs - TypeError:无法读取验证时未定义的属性“值”
- node.js - Strapi 的文件上传方法的控制器在哪里,如何在 React 中自定义?