当前位置: 首页 > 知识库问答 >
问题:

用单个空格替换非ASCII字符

周正真
2023-03-14
def remove_non_ascii_1(text):

    return ''.join(i for i in text if ord(i)<128)
def remove_non_ascii_2(text):

    return re.sub(r'[^\x00-\x7F]',' ', text)

在无数类似的SO问题中,没有一个是针对字符替换而不是剥离,另外还针对所有非ASCII字符而不是某个特定字符。

共有1个答案

林和畅
2023-03-14

您的''.join()表达式正在筛选,删除任何非ASCII的内容;您可以改用条件表达式:

return ''.join([i if ord(i) < 128 else ' ' for i in text])

这将逐个处理字符,并且每个替换的字符仍将使用一个空格。

正则表达式只需用空格替换连续的非ASCII字符:

re.sub(r'[^\x00-\x7F]+',' ', text)
 类似资料:
  • 问题内容: 我需要将所有非字符替换为一个空格。令我惊讶的是,这在Python中并不是一件容易的事,除非我丢失了某些东西。以下功能仅删除所有非ASCII字符: 并且该字符将非ASCII字符替换为根据字符代码点中字节数量的空格数量(即,–字符替换为3个空格): 问题答案: 你的表达式正在过滤,删除任何非ASCII的内容;你可以改用条件表达式: 这将一个接一个地处理字符,每个替换字符仍将使用一个空格。

  • 我有这个regex来删除所有非字母数字字符。 添加到此行的任何帮助,以用单个空格替换所有多个空格。

  • 问题内容: 我的字符串带有多余的空格,每当有多个空格时,我希望它只有一个。 任何人?我尝试搜索Google,但没有任何帮助。 谢谢 问题答案: 像这样:

  • 问题内容: 我正在寻找用不间断空格替换多个空格的Java正则表达式。应使用相同数量的不间断空格替换两个或多个空格,但不应替换单个空格。这需要适用于任意数量的空格。并且第一个字符可以是1个或多个空格。 因此,如果我的字符串像这样开始: 我需要新的String看起来像这样: 问题答案: 您也可以一起跳过正则表达式。 我还没有测试过,但是第一个发现了两个空格的所有情况,并用不间断的空格替换了它们。第二种

  • 所有非字母数字字符 所有换行符 空白的所有多个实例 只有一个空格 对于那些在家里玩的人(以下方法确实管用) 我的想法是,正则表达式可能足够强大,可以在一个语句中实现这一点。我认为id需要的组件是 -删除非字母数字字符 -匹配任何空格集合 -匹配所有新行 -全局、多行、不区分大小写 然而,我似乎无法以正确的方式来设置正则表达式(以下操作不起作用) 输入 所需输出

  • 我正在寻找一个整洁的正则表达式解决方案来代替 所有非字母数字字符 所有换行 空白空间的所有多个实例 只有一个空格 对于那些在家里玩的人(以下确实有效) 我的想法是正则表达式可能足够强大,可以在一个语句中实现这一点。我认为我需要的组件是 -删除非字母数字字符 但是,我似乎无法以正确的方式设置正则表达式的样式(以下内容不起作用) 输入 期望输出