如何使用Python统计TXT文件中不含特殊字符的字符数及最长单词
实现方案(Python入门友好版)
前置说明
将待处理的TXT文件和Python代码放在同一文件夹,或者填写TXT文件的绝对路径即可运行,所有方案都不需要额外安装第三方依赖。
基础写法(无复杂语法,易理解)
我们会分两步完成需求,中间变量逻辑清晰,适合入门阶段学习:
# 定义需要排除的特殊字符集合 exclude_chars = {'.', ',', ';', '!', ':'} # 有效字符计数器 valid_char_total = 0 # 读取TXT文件,把'你的文件.txt'替换为实际的文件名 with open('你的文件.txt', 'r', encoding='utf-8') as f: content = f.read() cleaned_content = '' # 逐字符处理,过滤特殊字符 for char in content: if char not in exclude_chars: cleaned_content += char valid_char_total += 1 # 输出有效字符总数 print(f"排除特殊字符后的总字符数:{valid_char_total}") # 拆分单词、查找最长单词 word_list = cleaned_content.split() if not word_list: print("文件内无有效单词") else: # 按单词长度取最大值 longest_word = max(word_list, key=lambda x: len(x)) print(f"最长有效单词:{longest_word},单词长度:{len(longest_word)}")
简化写法(熟悉基础语法后使用)
如果已经掌握基础语法,可以用正则表达式简化处理逻辑:
import re # 匹配所有需要排除的特殊字符的正则规则 exclude_rule = r'[.,;!:]' with open('你的文件.txt', 'r', encoding='utf-8') as f: content = f.read() # 批量替换所有特殊字符为空 cleaned_content = re.sub(exclude_rule, '', content) valid_char_total = len(cleaned_content) word_list = cleaned_content.split() longest_word = max(word_list, key=lambda x: len(x)) if word_list else '无有效单词' print(f"排除特殊字符后的总字符数:{valid_char_total}") print(f"最长有效单词:{longest_word}")
注意事项
- 上述拆分单词的逻辑默认按空格拆分,适合纯英文、中英混排内容,如果是纯中文内容需要调整分词规则
- 如果需要新增其他需要排除的特殊字符,直接往基础写法的
exclude_chars集合,或者正则规则的中括号里加对应字符即可
内容的提问来源于stack exchange,提问作者user17264517
相关产品推荐
相关产品推荐

