我正在尝试阅读源文件(例如Python中的一个)并且每次出现的特定字符都要替换为2个空格,并且计算所有这些替换。
从here开始,我使用此
#!/usr/bin/env python3
import fileinput
with fileinput.FileInput(fileToSearch, inplace=True, backup='.bak') as file:
for line in file:
print(line.replace(specificChar, ' '), end='')
完全按照我的意愿工作(即使重写每一行)。
但是,我找不到计算替换总数的方法;我虽然尝试了
counter = 0
if is specificChar in line:
counter += 1
效率不高因为我将为line
遍历counter
一次,而line.replace
遍历一次似乎不是Pythonic的<li>
。
我可以考虑其他任何实施吗?
答案 0 :(得分:1)
使用.count
计算替换前行中字符的出现次数:
count = 0
for line in file:
count += line.count(specificChar)
print(line.replace(specificChar, ' '), end='')
答案 1 :(得分:1)
使用re.subn
替换和计数,返回一个元组(new_string,number_of_subs_made),就像这样...
import re
count = 0
for line in file:
(result, qty) = re.subn(specific_char, ' ', line)
count += qty
print(result, end='')
这类似于摩西的出色答案,但是避免了每行的两次遍历,并且仍然可读。