我正在尝试计算日志文件内容中的空格数。
我提到了多个网站,可能的解决方案如下:
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)
这会将缩进(第一行的结尾和第一行的星号)视为空格。
我希望代码仅打印文件内容中的空格数(不包括逐行缩进)
答案 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
->文本中的空格