如何摆脱字符串开头或结尾的非字母数字字符

use*_*999 3 python list character python-3.x

我有一个列表,其中的元素在每个字符串的开头或结尾都有不必要的(非字母数字)字符.

防爆.

'cats--'
Run Code Online (Sandbox Code Playgroud)

我想摆脱 -

我试过了:

for i in thelist:
    newlist.append(i.strip('\W'))
Run Code Online (Sandbox Code Playgroud)

那没用.有什么建议.

jfs*_*jfs 8

def strip_nonalnum(word):
    if not word:
        return word  # nothing to strip
    for start, c in enumerate(word):
        if c.isalnum():
            break
    for end, c in enumerate(word[::-1]):
        if c.isalnum():
            break
    return word[start:len(word) - end]

print([strip_nonalnum(s) for s in thelist])
Run Code Online (Sandbox Code Playgroud)

要么

import re

def strip_nonalnum_re(word):
    return re.sub(r"^\W+|\W+$", "", word)
Run Code Online (Sandbox Code Playgroud)


Wik*_*żew 7

_要从两端删除除字母、数字之外的一个或多个字符,您可以使用

re.sub(r'^\W+|\W+$', '', '??cats--') # => cats
Run Code Online (Sandbox Code Playgroud)

或者,如果_也要删除,则包装\W到字符类中并_在其中添加:

re.sub(r'^[\W_]+|[\W_]+$', '', '_??cats--_')
Run Code Online (Sandbox Code Playgroud)

请参阅正则表达式演示正则表达式图

在此输入图像描述

请参阅Python 演示

import re
print( re.sub(r'^\W+|\W+$', '', '??cats--') )          # => cats
print( re.sub(r'^[\W_]+|[\W_]+$', '', '_??cats--_') )  # => cats
Run Code Online (Sandbox Code Playgroud)


Chr*_*ian 2

您可以使用正则表达式。该方法re.sub()将采用三个参数:

  • 正则表达式
  • 替代品
  • 字符串

代码:

import re

s = 'cats--'
output = re.sub("[^\\w]", "", s)

print output
Run Code Online (Sandbox Code Playgroud)

解释:

  • 该部分"\\w"匹配任何字母数字字符。
  • [^x]将匹配任何不是的字符 x