Python 3.x 计算文本中不包括缩进的空格数
我试图计算日志文件内容中的空格数 我参考了多个网站,可能提供的解决方案如下:Python 3.x 计算文本中不包括缩进的空格数,python-3.x,Python 3.x,我试图计算日志文件内容中的空格数 我参考了多个网站,可能提供的解决方案如下: 数据文件=输入(“输入文件名:”) k=0 以open(数据文件“r”)作为openedfile: 对于openedfile中的行: words=line.split() 对于我来说,用文字来说: 对于i中的字母: 如果(字母.isspace): k=k+1 印刷品(k) 但是这个代码会打印文件中的字母数 我尝试了以下代码: fname=input(“输入文件名:”) k=0 将open(fname,'r')作为f
数据文件=输入(“输入文件名:”)
k=0
以open(数据文件“r”)作为openedfile:
对于openedfile中的行:
words=line.split()
对于我来说,用文字来说:
对于i中的字母:
如果(字母.isspace):
k=k+1
印刷品(k)
但是这个代码会打印文件中的字母数
我尝试了以下代码:
fname=input(“输入文件名:”)
k=0
将open(fname,'r')作为f:
对于f中的行:
对于直列:
如果(a.isspace())==True:
k=k+1
打印(“出现空格:”)
印刷品(k)
这是将缩进(第一行的末端和第一行的星形)视为一个空格
我希望代码只打印文件内容中的空格数(不包括行与行之间的缩进)您可以使用以下方法去除前导空格和尾随空格:
您可以计算应用于空格的
.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
使用正则表达式-->re.findall(r“\s”,line.strip())
Ex:
import re
with open(filename) as infile:
print(sum(len(re.findall(r"\s", line.strip())) for line in infile))
-->用于文本中的空格\s
k+=line.strip().count(“”)
@Heike的操作,例如,这不会计算制表符数。@Selcuk这就是我在评论中提到“Just spaces”的原因。@Heike同意,但OP当前使用的是.isspace()
它检测所有空白字符。你建议的方法不是等效的。这是完美的。你知道在什么情况下这可能会失败吗?考虑到冗长的段落、双空格、制表符、缩进或换行符?我还想更好地了解使用-1I处理双空格(或任何其他分隔符)情况的逻辑。如果缩进是用制表符做的,而不想把它作为空间来计算,不要替换它们,它们将不被计数(如中断)。对于负一的逻辑:考虑字符串<代码>“Hello,World!”< /C>。拆分将导致一个长度为2的列表[“Hello”,“world!”]
(比空格多出一个项目)。减1输出正确的空格数。
Lorem ipsum dolor sit amet, consectetur adipiscing elit
import re
with open(filename) as infile:
print(sum(len(re.findall(r"\s", line.strip())) for line in infile))