我正在使用.txt文件。我想要文件中没有非ASCII字符的文本字符串。但是,我想留空格和句点。目前,我也正在剥离它们。这是代码:def onlyascii(char): if ord(char) < 48 or ord(char) > 127: return '' else: return chardef get_my_string(file_path): f=open(file_path,'r') data=f.read() f.close() filtered_data=filter(onlyascii, data) filtered_data = filtered_data.lower() return filtered_data我应该如何修改onlyascii()以保留空格和句点?我想这并不太复杂,但我无法弄清楚。
3 回答
白板的微信
TA贡献1883条经验 获得超3个赞
您的问题不明确;前两个句子加在一起表示您相信空格和“句点”是非ASCII字符。这是不正确的。等于ord(char)<= 127的所有字符都是ASCII字符。例如,您的函数不包括这些字符!“#$%&\'()* +,-。/,但包括其他几个字符,例如[] {}。
请退后一步,三思而后行,然后编辑您的问题以告诉我们您要做什么,而无需提及ASCII单词,以及为什么您认为ord(char)> = 128这样的chars是可忽略的。另外:哪个版本的Python?输入数据的编码是什么?
请注意,您的代码以单个字符串的形式读取整个输入文件,并且您对另一个答案的注释(“最佳解决方案”)意味着您无需关心数据中的换行符。如果您的文件包含这样的两行:
this is line 1
this is line 2
结果将是'this is line 1this is line 2'……您真正想要的是什么?
更好的解决方案包括:
过滤器功能比一个更好的名字 onlyascii
认识到如果要保留参数,则过滤器函数仅需要返回真实值:
def filter_func(char):
return char == '\n' or 32 <= ord(char) <= 126
# and later:
filtered_data = filter(filter_func, data).lower()
添加回答
举报
0/150
提交
取消