很容易的用正則表達式:
要爲創建
的test.txt
itemA (3)
itemB (test) abcd (2)
itemC xyx (3)
output.txt的文件
r'\s*\((\d+)\)'
那將匹配(可選)的空白,隨後在parethesis的數字,更換放入一個組中,方便數:
parensnumber = re.compile(r'\s*\((\d+)\)')
count = int(parensnumber.search(line).group(1))
for i in range(count):
print(parensnumber.sub('-{0}'.format(i + 1), line))
演示:
>>> import re
>>> parensnumber = re.compile(r'\s*\((\d+)\)')
>>> parensnumber.sub(r'-\1', 'itemA (3)')
'itemA-3'
>>> parensnumber.sub(r'-\1', 'itemB (test) abcd (2)')
'itemB (test) abcd-2'
>>> line = 'itemB (test) abcd (2)'
>>> count = int(parensnumber.search(line).group(1))
>>> for i in range(count):
... print(parensnumber.sub('-{0}'.format(i + 1), line))
...
itemB (test) abcd-1
itemB (test) abcd-2
完整代碼爲您具體的例子:
import os
import re
parensnumber = re.compile(r'\s*\((\d+)\)')
with open('C:\\Dropbox\\test.txt','r') as input:
for line in input:
count = int(parensnumber.search(line).group(1))
for i in range(count):
print(parensnumber.sub('-{0}'.format(i + 1), line))
要格式化代碼爲stackoverflow,只需將其粘貼在逐字,並按下'Ctrl' +'K'。謝謝! – phihag