Python 文件每行旁边的字符数

Python character count beside each line of a file

问题:我必须将下面的文本作为一个名为 data.txt 的文件,并添加一个字母计数器,它只计算居中对齐文本中左对齐的字母 A-Z 和 a-z。完成 lettercounter.ljust(width) 和 text.cjust(width)

此程序必须接受用户输入的文件名,并且 return 与此程序一样输出文件。这行得通,我唯一的问题是如何着手做这个柜台。

我打开的 data.txt 文件内容如下:

'Twas brillig, and the slithy toves
       Did gyre and gimble in the wabe;
    All mimsy were the borogoves,
       And the mome raths outgrabe.
                            - Lewis Carroll

我需要它来读取左对齐的字母字符,例如:

28:
25:
24:
23:
12:

此代码还有更多内容,但仅适用于我正在处理的统计数据。我不想在没有问题的代码上浪费人们的时间。

我有:

def main():

    fileName = input("Enter name of input file:   ")
    infile = open(fileName, "r")
    infileData = infile.read()
    outfileName = fileName.split(".")#Should split the file name from the format
    outfileName = outfileName[0] + ".out"
    outfile = open(outfileName, "w")
    outfile.writelines(infileData)

    print("The name of output file is:",outfileName)
    print()

我需要修复什么。任何帮助都会很棒。

with (infileData, 'r') as line:
    for line in range(line):
        line.count(len(line.split()))
        outfile.writelines(infileData)

main()

我的理论是创建一个循环,return 每行计数到左对齐的计数器。我的问题是我不知道该怎么做。

我不知道用户的文件实际使用了多少行,但它与程序位于同一目录中。所以我不需要搜索计算机目录或让用户输入目录文件名。

这里有一个 oneliner,可以满足您的需求。 strings.ascii_letters 包含 a-zA-Z 的串联,但您可以根据需要选择不同的字符集。

现在将此功能集成到您现有的代码中应该不会太困难。这是一些代码,表明它符合您建议的数字。

import string

def count_letters(line):
    return sum(line.count(x) for x in string.ascii_letters)

jabberwocky = [
"'Twas brillig, and the slithy toves        ",
"       Did gyre and gimble in the wabe;    ",
"    All mimsy were the borogoves,          ",
"       And the mome raths outgrabe.        ",
"                            - Lewis Carroll"]

for line in jabberwocky:
    print(count_letters(line))

输出:

28
25
24
23
12