问题:我必须将以下文本作为名为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()
我的理论是创建一个循环,并将每个行计数返回到左对齐计数器。我的问题是我不知道如何做到这一点。
我不知道用户的文件实际将使用多少行,但它将与程序位于同一目录中。所以我不需要搜索计算机目录或让用户输入目录文件名。
答案 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