计算文本中不包括缩进的空格数

时间:2019-06-20 06:03:13

标签: python-3.x

我正在尝试计算日志文件内容中的空格数。

我提到了多个网站,可能的解决方案如下:


datafile = input("enter the file name:")

k=0

with open(datafile, 'r') as openedfile:
    for line in openedfile:
        words = line.split()
        for i in words:
                for letter in i:
                    if(letter.isspace):
                        k=k+1
print (k)

但是此代码将打印文件中的字母数。

我尝试了以下代码:

fname = input("Enter file name: ")

k = 0

with open(fname, 'r') as f:
        for line in f:
                for a in line:
                    if (a.isspace()) == True:
                        k = k+1
print("Occurrences of blank spaces:")
print(k)

这会将缩进(第一行的结尾和第一行的星号)视为空格。

我希望代码仅打印文件内容中的空格数(不包括逐行缩进)

4 个答案:

答案 0 :(得分:1)

total_spaces = 0

with open(fname, 'r') as f:
    total_spaces = sum([len(list(filter(lambda c: c == ' ', line))) for line in f])

print(total_spaces)

答案 1 :(得分:1)

您可以计算通过.split()方法应用于空格所产生的项数(减一,因为项比空格多一)。

n_space = len(open('text.txt', 'r').read().split(' ')) - 1

使用下面的text.txt文件,该代码成功计数了7个空格。

Lorem ipsum dolor sit amet, consectetur adipiscing elit

修改

如果您有多个分隔符要当作空格处理(如双倍空格或制表符),只需在分割和计数之前将其替换为简单的空格即可

text = open('text.txt', 'r').read().replace('  ', ' ').replace('\t', ' ')
n_spaces = len(text.split(' ')) - 1

答案 2 :(得分:0)

您可以使用.strip()去除开头和结尾的空格:

Manager id

答案 3 :(得分:0)

使用正则表达式-> re.findall(r"\s", line.strip())

例如:

import re

with open(filename) as infile:
    print(sum(len(re.findall(r"\s", line.strip())) for line in infile))
  • \s->文本中的空格