怎么在控制台input输入10万字,随心不确定多长文章,清除标点按照文字多少排序?

while True:
    txt = ''
    while len(txt)<30000:
        txt += input() + '\n'
    with open('test.txt', 'a+') as f:
        f.write(txt)


k=input('''''')
import re
text = k
r = re.sub(r'[~`!@#$%^&*()_\-+=|\\{\}\[\]:;\"\'<>,.?/·!¥…()—【】、?《》,。]+', '\n', text)
# print(r)


str = (sorted(r.split(), key=len))
for name in str[:]:
    print(name)

# 我这不准确

  您应该是要统计字符在10万文本中出现的次数吧?那就不可以用len()函数,要轮询统计,最好用字典保存统计结果,字典的dicy[key赋值和get(key, 0)方法用于统计很方便。我用了《三国演义》全文60w+字符文本试炼,统计字符4k+。

&rmsp; 轮询太大的字符串,工作量太大,我取巧用了字符串的组成字符来轮询统计。

代码

#!/usr/bin/nve python
# coding: utf-8

import re


title = '三国演义'
filename = f'/sdcard/qpython/{title}.txt'
text = open(filename).read()
print(f"\n\n统计《{title}》文本{len(text)/10000:6.2f}万个字符的文本:\n")

text = re.sub(r'''[~`!@#$%^&*()_\-'+=|\\"{\}\[\]:;\"\'<>,.?/·!¥:“”…()—【】、?《》,。\]+ \n ]''', '', text)


chars = set(text) # 获取组成字符文本的字符(标点及特殊字符除外)。

count_dict = {} # 初始化统计字符字典为空。
for i in chars: # 轮询字符集合,统计字符个数。
    count_dict[i] = count_dict.get(i, 0) + text.count(i)

count_list = [(k, v) for k,v in count_dict.items()] # 解析字典成统计列表,方便排序。
count_list.sort(key=lambda x: x[1], reverse=True) # 按字符个数排降序。

print(f"\n统计字符{len(chars)}个(降序排列):\n\n{','.join(map(lambda x: f'{x[0]}{x[1]}', count_list))}")# 格式化输出字符统计列表。

代码运行效果截屏

img