替换并计算文件中特定字符的出现次数(Python)

时间:2016-06-02 07:15:49

标签: python-3.x str-replace

我正在尝试阅读源文件(例如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>

我可以考虑其他任何实施吗?

2 个答案:

答案 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='')

这类似于摩西的出色答案,但是避免了每行的两次遍历,并且仍然可读。