【发布时间】:2017-08-11 17:03:50
【问题描述】:
我正在使用 Python 3.6。我有一个源文件(txt),每个句子都添加了<s></s> 标签。源文件中可能有几百个句子。 (我会有很多这样的源文件,但现在我只处理一个。)我想搜索文本,找到每个出现的 <s> 并将其替换为 <s n="x"> 其中x 是一个计数器开始在 1 处,每个句子在n="x" 属性中都有一个x 的序列号。完成的文本应如下所示:
<s n="1">This is the first sentence. </s><s n="2">This is the second sentence. </s> … <s n="nth">This is the nth sentence.</s>
我只需要更改开始标签中的数字,这与句子中的文字无关。
我想做这样的事情:
file_handle = open(file, 'r')
file_string = file_handle.read()
file_handle.close()
for counter, '<s>' in file_string:
file_string = file_string.replace('<s>', '<s n="' + str(counter) + '">')
我知道前三行不是 Pythonic,但它们在这种情况下发挥了作用(意味着获取字符串)。如果我应该使用字符串以外的东西,那么前三行需要更改。问题是我尝试过的任何操作都不会导致针对 file_string 中 <s> 的每个连续实例的计数器移动到 counter+1。我得到的最好的结果是每个句子都有<s n="1">作为开始标签。
我尝试了枚举、替换、re.sub、匹配的各种组合,我正面临一个经典的新手“这很容易但我看不到”的问题。我所做的搜索都没有发现这个嵌入式计数器概念。
我怎样才能完成这个简单的任务?
【问题讨论】:
标签: python-3.x loops str-replace