我正在阅读标识文本中特定特征的文本文件。一切都很好,直到它到达显示有15个空格而不是6个空格的空间部分。
文本文件是
Hello
Do school units regularly
Attend seminars
Study 4 tests
Bye
,脚本是
def main():
lower_case = 0
upper_case = 0
numbers = 0
whitespace = 0
with open("text.txt", "r") as in_file:
for line in in_file:
lower_case += sum(1 for x in line if x.islower())
upper_case += sum(1 for x in line if x.isupper())
numbers += sum(1 for x in line if x.isdigit())
whitespace += sum(1 for x in line if x.isspace())
print 'Lower case Letters: %s' % lower_case
print 'Upper case Letters: %s' % upper_case
print 'Numbers: %s' % numbers
print 'Spaces: %s' % whitespace
main()
是否有任何应该更改的内容,以便空格数量会变为6?
答案 0 :(得分:0)
发生这种情况的原因是因为换行也被认为是空格。现在,您打开的文件可能是在Windows上创建的,而在Windows上,换行符是两个字符(实际换行符和插入符号返回)。由于你有五行,你得到额外的10个空格,总共16个(一个在某处丢失,我只能猜测其中一行在结尾处有不同的换行符,没有插入符号)。
要修复它,只需在计算空格时删除该行。
whitespace += sum(1 for x in line.strip() if x.isspace())
但是,这也会删除任何不是换行符的尾随和前导空格。要从最后删除换行符,您可以执行
whitespace += sum(1 for x in line.rstrip("\r\n") if x.isspace())
答案 1 :(得分:0)
另一种可能性是不使用isspace()
,而是检查您想要的字符,例如
whitespace += line.count(' ') + line.count('\t')