如何使用Python删除非ASCII字符但保留句点和空格?

我正在使用.txt文件。我想要文件中没有非ASCII字符的文本字符串。但是,我想留空格和句点。目前,我也正在剥离它们。这是代码:


def onlyascii(char):

    if ord(char) < 48 or ord(char) > 127: return ''

    else: return char


def 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()以保留空格和句点?我想这并不太复杂,但我无法弄清楚。


慕田峪9158850
浏览 699回答 3
3回答

白板的微信

您的问题不明确;前两个句子加在一起表示您相信空格和“句点”是非ASCII字符。这是不正确的。等于ord(char)<= 127的所有字符都是ASCII字符。例如,您的函数不包括这些字符!“#$%&\'()* +,-。/,但包括其他几个字符,例如[] {}。请退后一步,三思而后行,然后编辑您的问题以告诉我们您要做什么,而无需提及ASCII单词,以及为什么您认为ord(char)> = 128这样的chars是可忽略的。另外:哪个版本的Python?输入数据的编码是什么?请注意,您的代码以单个字符串的形式读取整个输入文件,并且您对另一个答案的注释(“最佳解决方案”)意味着您无需关心数据中的换行符。如果您的文件包含这样的两行:this is line 1this is line 2结果将是'this is line 1this is line 2'……您真正想要的是什么?更好的解决方案包括:过滤器功能比一个更好的名字 onlyascii认识到如果要保留参数,则过滤器函数仅需要返回真实值:def filter_func(char):&nbsp; &nbsp; return char == '\n' or 32 <= ord(char) <= 126# and later:filtered_data = filter(filter_func, data).lower()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python