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

Python删除所有不是字母或数字的东西

督建柏
2023-03-14
问题内容

我在使用Python正则表达式时遇到了一些麻烦。

删除字符串中所有非字母或数字的字符的好方法是什么?

谢谢!


问题答案:

[\w] 匹配项(字母数字或下划线)。

[\W] 匹配项(非(字母数字或下划线)),等同于(非字母数字和下划线)

您需要[\W_]删除所有非字母数字。

使用re.sub()时,如果通过匹配[\W_]+而不是一次替换来减少替换次数(昂贵),则效率会大大提高。

现在,您只需要定义字母数字即可:

str 对象,仅ASCII A-Za-z0-9:

    re.sub(r'[\W_]+', '', s)

str 对象,仅区域设置定义的字母数字:

    re.sub(r'[\W_]+', '', s, flags=re.LOCALE)

unicode 对象,所有字母数字:

    re.sub(ur'[\W_]+', u'', s, flags=re.UNICODE)

str对象的示例:

>>> import re, locale
>>> sall = ''.join(chr(i) for i in xrange(256))
>>> len(sall)
256
>>> re.sub('[\W_]+', '', sall)
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> re.sub('[\W_]+', '', sall, flags=re.LOCALE)
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
>>> locale.setlocale(locale.LC_ALL, '')
'English_Australia.1252'
>>> re.sub('[\W_]+', '', sall, flags=re.LOCALE)
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\x83\x8a\x8c\x8e\
x9a\x9c\x9e\x9f\xaa\xb2\xb3\xb5\xb9\xba\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\
xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd8\xd9\xda\xdb\xdc\xdd\xde\
xdf\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\
xf3\xf4\xf5\xf6\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
# above output wrapped at column 80

Unicode示例:

>>> re.sub(ur'[\W_]+', u'', u'a_b A_Z \x80\xFF \u0404', flags=re.UNICODE)
u'abAZ\xff\u0404'


 类似资料:
  • 问题内容: 我正在编写python MapReduce字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章从Python的字符串中剥离了除了字母数字字符之外的所有内容,这显示了使用正则表达式的一个很好的解决方案,但是我不确定如何实现它 恐怕我不确定该如何使用该库甚至正则表达式。我不确定如何将正则表达式模式正确地应用于传入的字符串(书的一行)以检索没有任何非字母数字字符的新行。 有什么建议

  • 我不理解替换所有方法的工作原理。更具体地说,第一个参数采用字符串正则表达式。我想删除所有不是数字的字符,包括句点。 我的实现。 样本输出: 除了字母表,它还删除了一切

  • 问题内容: 我正在尝试编写一种方法,该方法将从Java中删除所有非字母字符,然后将String转换为小写字符串。我尝试使用正则表达式将所有非字母字符的出现替换为。但是,我得到的输出无法执行此操作。这是代码 但是,如果我尝试提供具有非字母的输入(例如或),则输出也将由它们组成,因为它们不会被删除。 输入示例 我得到的输出 预期的输出 问题答案: 问题是您的更改没有存储,因为字符串是不可变的。每个方法

  • 我希望使用正则表达式尝试删除字符串中的所有非字母数字字符,并用 我只想允许基本上按字母顺序排列的单词A-Z和 这是专门准备字符串成为URL的一部分,因此需要符号而不是空格。 我已经查看了< code>/\W /,但是这将删除所有空格和字母数字字符,而我希望尽可能保留空格,然后用符号替换。 我已经搜索了一下,但我似乎找不到一些东西,我希望有人能对此有任何简单的建议。 示例字符串

  • 问题内容: 我需要从字符串中删除所有不在集合中或不是空格的字符。 有人有功能吗? 问题答案: 听起来您几乎已经知道自己想做的事情,基本上将其定义为正则表达式。

  • 我正在尝试用Java编写一个正则表达式,它从段落中删除所有非字母数字字符,但单词之间的空格除外。 如何修复此错误?