首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不统计文件中的正确字符

不统计文件中的正确字符
EN

Stack Overflow用户
提问于 2018-08-13 00:44:03
回答 2查看 60关注 0票数 0

我有以下代码,它按预期运行,但在计算字符数和最长行的长度时有一些问题。下面是我的代码:

代码语言:javascript
运行
复制
def stats(file_name):
    n_chars = 0
    n_words = 0
    n_lines = 0
    longest_line = 0
    with open(file_name) as f:
        lines = f.readlines()
        n_lines = len(lines)
        longest_line = max([len(line) for line in lines])
        words = []
        line_words = [line.split() for line in lines]
        for line in line_words:
            for word in line:
                words.append(word)
        n_words = len(words)
        chars = []
        line_chars = [list(word) for word in words]
        for line in line_chars:
            for char in line:
                chars.append(char)
        n_chars = len(chars)
        f.close()
        return n_chars, n_words, n_lines, longest_line

你们能看到什么会使代码不能计算正确的字符数吗?最长的一行总是显示为比正确答案多一行。

输入如下:

美丽的汤,如此浓郁和青绿,在热腾腾的图腾中等待!对于这样的美味,谁不会屈尊呢?晚上的汤,美丽的汤!晚上的汤,美丽的汤!

博--胡说八道!博--胡说八道!所以--哦--晚上,美丽,美丽的汤!

美味的汤!谁会关心鱼、野味或其他菜肴呢?谁不愿意为两便士的美汤付出一切呢?彭尼沃斯,只有美丽的汤吗?

博--胡说八道!博--胡说八道!所以--哦--晚上,美丽的,美丽的--浓汤!

预期输出如下:

字符: 553字: 81行: 21最长行: 38

实际(失败)输出:

字符: 469字: 81行: 21最长: 39

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-13 02:21:23

您只计算非空格字符。可能需要的字符数包括空格。

代码语言:javascript
运行
复制
def stats(file_name):
    n_chars = 0
    n_words = 0
    longest_line = 0
    with open(file_name) as lines:
        for n_lines, line in enumerate(lines, 1):
            longest_line = max(longest_line, len(line.rstrip('\n'))
            n_chars += len(line)
            n_words += len(line.split())
    return n_chars, n_words, n_lines, longest_line
票数 0
EN

Stack Overflow用户

发布于 2018-08-13 01:20:39

要获得正确的字符数,必须像计算其他字符一样计算空格。否则,你得到的值会小得多。类似于:

代码语言:javascript
运行
复制
n_chars = sum( [len(line) for line in lines] )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51810837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档