当前位置: 首页 > 面试题库 >

Python-用单个空格替换非ASCII字符

龚盛
2023-03-14
问题内容

我需要将所有非ASCII(\ x00- \ x7F)字符替换为一个空格。令我惊讶的是,这在Python中并不是一件容易的事,除非我丢失了某些东西。以下功能仅删除所有非ASCII字符:

def remove_non_ascii_1(text):

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

并且该字符将非ASCII字符替换为根据字符代码点中字节数量的空格数量(即,–字符替换为3个空格):

def remove_non_ascii_2(text):

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

问题答案:

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

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

这将一个接一个地处理字符,每个替换字符仍将使用一个空格。

你的正则表达式应仅将连续的非ASCII字符替换为空格:

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

注意+那里。



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

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

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

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

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

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