![](/img/trans.png)
[英]How to ignore strings that start with certain pattern using regular expression in python?
[英]How to put strings in front of a certain 'word' in python by using regular expression?
我在 python 中使用正则表达式时遇到了一些问题。
如下例所示,
我想要做的是把'string_1'放在以字母'past'开头的段落前面。(参考下面的代码)
输入.txt
some random texts (100+ lines)
bbb
...
ttt
modern_b different_story(
...
some random texts
...
);
past_c different_story(
...
some random texts
...
);
所需 output.txt
some random texts (100+ lines)
bbb
...
ttt
modern_b different_story(
...
some random texts
...
);
java is fun;
python is fun;
past_c different_story(
...
some random texts
...
);
好的,那么这是我到目前为止的代码:
import re
output_file = open('output.txt', 'w')
input_file = open('input.txt', 'r')
string_1 = 'java is fun; \npython is fun;'
t = re.sub(
'(?=\s*^past)',
'\n' + string_1 + '\n' ,
input_file.read(),
0,
re.M
)
output_file.write(t)
当我运行此代码时,output 出现在“past_c”前面,但它带有多个相同的行。我只需要字符串“一次”。 我想我几乎到达了终点。 但是现在多条线似乎在脖子上疼痛..我假设绳子足够长。 我只需要参考下一段,而不是上一段(在这种情况下为'past_c'。)你能给我任何想法来纠正这个问题吗? 或者,也欢迎任何更有效的方法来实现这一点!! 谢谢
您可以使用以下内容来实现您想要的我的想法:
import re
with open("input.txt", "r") as inp:
with open("output.txt", "w") as oup:
for i in inp:
oup.write("my_string " + i) if re.match("^a", i) else oup.write(i)
基本上,如果一行以“a”开头,则添加“my_string”并将该行写入 output 文件,否则它只是将该行复制到 output 文件
下面的这个片段做同样的事情,但将它写入同一个文件:
import re
with open("input.txt", "r") as inp:
my_list = []
for i in inp:
my_list.append(("my_string " + i)) if re.match("^a", i) else my_list.append(i)
with open("input.txt", "w") as inp:
inp.write("".join(my_list))
积极展望未来可能会有所帮助。
text = '''
bbb
...
ttt
modern_b different_story(
...
some random texts
...
);
past_c different_story(
...
some random texts
...
);
'''
re.sub(r'(?=past_c different_story)', r'java is fun;\npython is fun;\n\n', text)
bbb
...
ttt
modern_b different_story(
...
some random texts
...
);
java is fun;
python is fun;
past_c different_story(
...
some random texts
...
);
def fun1(text, st):
return re.sub(r'(?=past_c different_story)', fr'{st}', text)
fun1(text, 'java is fun;\npython is fun;\n\n')
bbb
...
ttt
modern_b different_story(
...
some random texts
...
);
java is fun;
python is fun;
past_c different_story(
...
some random texts
...
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.