gpt4 book ai didi

Python 文本文件统计

转载 作者:太空宇宙 更新时间:2023-11-04 04:41:36 24 4
gpt4 key购买 nike

我正在尝试使用 python 读取一个简短的文本文件,通过删除标点符号(: , . ! ?)来清理它并查找行数和单词数。我创建的文件有 3 行,但在我删除标点符号后它显示有 5 行...我做错了什么?请帮忙。这是我的

word_count = 0
line_count = 0
with open('book.txt','r') as file:
data = file.read()
for char in ': , . ! ?':
data = data.replace(char,' ')
wordslist = data.split()
for line in wordslist:
line_count += 1
word_count += len(wordslist)
print(word_count,line_count)

最佳答案

您的代码存在一些问题。

具体来说,不带参数的 split() 方法在任何空白 而不是行边界 上拆分字符串。 splitlines() 将按行拆分。

此外您的代码:

word_count += len(wordslist)

将单词列表的长度添加到 wordslist 的每个元素的字数中。这几乎肯定不是您想要的!

另请注意您的代码:

for char in ': , . ! ?': 
data = data.replace(char,' ')

将提供的字符串 (': , . ! ?':') 中的每个字符替换为空格。但是,由于您的字符串本身包含空格,因此您不必要地将 data 中的所有空格替换为空格 4 次以上。它不会改变结果,但会降低您的代码效率。

相反,您可以使用如下代码获得更正确的结果:

with open('book.txt','r') as file:
data = file.read()
for char in ':,.!?':
data = data.replace(char,' ')
word_count = len(data.split()) #count of words separated by whitespace
line_count = len(data.splitlines()) #count of lines in data
print(word_count,line_count)

附录

评论中也有人问如何获取字符数。假设字符数应该计算所有非空白字符(制表符、换行符等)或特殊字符列表中的所有字符,那么可以使用正则表达式来完成:

import re
#original code that stripped out punctuation here
chars_only = re.sub(r"\s+", "", data, flags=re.UNICODE)
char_count = len(chars_only)

re.sub 执行正则表达式替换,替换匹配表达式 r"\s+" 的字符(相当于 "所有空白字符") 与第二个参数 - 在本例中为空字符串。

但是,应该注意的是,此 char_count 将包括任何不在原始特殊标点字符列表(例如撇号)中的标点字符。

关于Python 文本文件统计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50500726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com