文件每行旁边的Python字符数

时间:2015-03-29 14:30:55

标签: python rewrite counter readfile

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

此程序必须接受用户输入的文件名,并按此程序返回输出文件。这是有效的,我唯一的问题是如何去做这个计数器。

我打开的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()

我的理论是创建一个循环,并将每个行计数返回到左对齐计数器。我的问题是我不知道如何做到这一点。

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

1 个答案:

答案 0 :(得分:0)

这是一个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