我有一个文本文件 C:\text\sample.txt
。如何搜索此文本文件,并为给定字符串的所有实例编号( 使用正则表达式 ),例如,以' h&#开头的单词39;以' y结尾?
sample.txt
的样子:(对于此示例文件,我使用的正则表达式为\bh.+y\b
,它将匹配happy和history。)
When a happy new history ...
Are you happy ...
How history ... very happy ...
...
我希望实现的编号效果:
When a 1>happy new 2>history ...
Are you 3>happy ...
How 4>history ... very 5>happy ...
...
我是python编程的新手。我怎么能用python代码实现这个目的?
目前,我只想出以下代码:
import fileinput
import re
for line in fileinput.input('sample.txt',inplace=1):
line = re.sub(r'\bh.+y\b',r'\bh.+y\b', line.rstrip())
答案 0 :(得分:0)
我没有你的文本文件,所以我只使用了文本“当一个快乐的新人你快乐多么幸福快乐”作为例子向你展示解决这个问题的方法。
word_to_find = "happy"
text_to_count = "When a happy new Are you happy How happy very happy"
text_table = text_to_count.split(" ")
counter = 1
text_output = ""
for i in text_table:
if i == word_to_find:
text_output += str(counter) + ">"+ str(i) + " "
counter += 1
else:
text_output += str(i) + " "
print(text_output)
这可以作为输出:
When a 1>happy new Are you 2>happy How 3>happy very 4>happy
您应该只用文本文件替换变量text_to_count
如果你想添加其他单词,你可以将它们添加到word_to_find并调整if条件
答案 1 :(得分:0)
据我了解您的问题,您需要在文件中搜索特定模式,然后将该匹配项与目前找到的匹配总数进行预先匹配。
以下是使用re.sub
和自定义函数以及全局计数器的示例。您可以将其合并到您的代码中:
>>> count = 1
>>> s
'The happy and hungry hippo had a happy meal for lunch.'
>>> def f(m):
... global count
... value = '{}-{}'.format(count, m.group())
... count = count + 1
... return value
...
>>> re.sub(r'(h\w+y)', f, s)
'The 1-happy and 2-hungry hippo had a 3-happy meal for lunch.'
您必须在( )
中包围正则表达式,以便捕获并返回匹配项,以便对其进行修改。