gpt4 book ai didi

python - 在 Notepad++ 中的匹配模式之前添加具有特定模式的新行

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:10 25 4
gpt4 key购买 nike

我有一个 csv 文件,我想对其进行修改。我喜欢在每一行字符“M06”之前添加一个新行“M19”。

之前:

T40400010
M06
(T40400010, 5.0MM SOLID CARBIDE REAMER - 6FL)

改造后:

T40400010
M19
M06
(T40400010, 5.0MM SOLID CARBIDE REAMER - 6FL)

我计划在 python 中使用正则表达式来解决这个问题,但我也对其他解决方案持开放态度。谢谢。

最佳答案

你可以这样做:

import re 

with open(fn) as f:
for line in f:
if re.search(r'^M06$', line):
print('M19')
print(line)

打印:

T40400010
M19
M06
(T40400010, 5.0MM SOLID CARBIDE REAMER - 6FL)

如果您想要 M06 之后的 M19 只需将 print(line) 移动到 if re.search(r '^M06$', line): 而不是下面。


如果你想要'编辑'文件的效果,并且文件大小合理(即,很容易适合内存)你可以这样做:

import re 

with open(fn) as f:
data=re.sub(r'^(M06)$', r'M19\n\1', f.read(), flags=re.M)

with open(fn, 'w') as f:
f.write(data)

如果你有一个比你想要的内存大的文件,你可以这样做:

import re, tempfile, shutil

with open(fn, 'r') as f_in, tempfile.NamedTemporaryFile(mode='w', delete=False) as f_out:
tmp_name=f_out.name
for line in f_in:
if re.search(r'^M06$', line):
print('M19\n',end='', file=f_out)
print(line,end='', file=f_out)

shutil.move(tmp_name, fn)

关于python - 在 Notepad++ 中的匹配模式之前添加具有特定模式的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52319319/

25 4 0
文章推荐: linux - 是否可以进行本地反向地理编码?
文章推荐: javascript - 更改网站上的默认选项卡功能
文章推荐: javascript 设置超时();不适用于 linux (firefox)
文章推荐: javascript - 不断刷新/接收输出
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com