【问题标题】:How to automatically number all the matching strings in a text file?如何自动编号文本文件中的所有匹配字符串?
【发布时间】:2018-03-20 05:20:34
【问题描述】:

我有一个文本文件,C:\text\sample.txt。如何搜索此文本文件,并对给定字符串的所有实例进行编号(使用正则表达式),例如,以“h”开头并以“h”结尾的单词“你”?

sample.txt 的样子:(对于这个示例文件,我使用的正则表达式是 \bh.+y\b,它将匹配快乐和历史。)

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,并在找到匹配项时将其递增。然后将此计数器的值添加到正在写回的字。如果您使用到目前为止的内容编辑问题,则更容易推荐确切的修复方法。
  • Ty .. 我已经编辑了问题。
  • 他们的方法更简单吗?我是编程新手。我只是希望找到一种方法来对文本文件中“某个字符串”的所有出现进行编号。我希望找到某个字符串的方法是使用正则表达式。实际上,任何解决方案都是好的,只要它能完成工作。

标签: python regex python-2.7


【解决方案1】:

据我了解您的问题,您需要在文件中搜索特定模式,然后将该匹配项与迄今为止找到的匹配总数预先挂起。

这是一个使用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.'

您必须将正则表达式括在( ) 中,以便捕获并返回匹配项,以便对其进行修改。

【讨论】:

  • 感谢您解决了我的问题。
【解决方案2】:

我没有你的文本文件,所以我只是用文本“当一个快乐的新人你快乐吗?多么快乐非常快乐”作为一个例子来向你展示解决这个问题的方法。

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 条件

【讨论】:

  • 他的问题是单词的编号,而不是阅读文件的部分。我引用他的话:“我知道如何打开文件,如何搜索,用正则表达式替换某些字符串。但我不知道如何自动为所有数学字符串编号。”
猜你喜欢
  • 2014-07-21
  • 2014-09-18
  • 2011-02-09
  • 1970-01-01
  • 2015-01-18
  • 2015-06-11
  • 2014-08-14
  • 1970-01-01
  • 2011-11-07
相关资源
最近更新 更多