Python如何解析文本文件单词、转小写并删除撇号以外的特殊字符
现有代码问题梳理
- 第一个获取文件名的
input()返回值没有存储,后续第二个input()会重复要求用户输入,逻辑错误 with代码块缩进不符合Python规范word.lower()会返回新的小写字符串,不会修改原字符串,你没有接收返回值所以小写转换不会实际生效- 缺失特殊字符过滤的逻辑
可行实现方案
可以用正则表达式匹配所有不属于小写字母、数字、撇号的字符,直接替换为空即可,下面是完整可运行代码:
import re # 存储用户输入的文件名 file_name = input("Please enter a file name: ") with open(file_name, 'r', encoding='utf-8') as input_file: for line in input_file: for word in line.split(): # 先转小写,再过滤掉除撇号外的所有非字母数字字符 processed_word = re.sub(r"[^a-z0-9']", "", word.lower()) # 这里可添加后续处理逻辑,比如存储、统计、打印等 print(processed_word)
逻辑说明
- 正则规则
r"[^a-z0-9']"中,[^xxx]表示匹配所有不属于[]内的字符,我们仅保留小写字母a-z(因为已经提前做了小写转换,无需匹配大写)、数字0-9和撇号',其余所有字符都会被替换为空 - 如果你不需要保留数字,直接删掉正则规则里的
0-9即可
内容的提问来源于stack exchange,提问作者Nat
相关产品推荐
相关产品推荐

