def symbolsReplaceDashes(text):
我想用连字符替换所有空格和符号。因为我想在URL中使用它。
答案 0 :(得分:5)
import re
text = "this isn't alphanumeric"
result = re.sub(r'\W','-',text) # result will be "this-isn-t-alphanumeric"
\W
类是\w
类的反转,它由字母数字字符和下划线([a-zA-Z0-9_]
)组成。因此,用短划线替换任何与\W
不匹配的字符将为您留下一个仅包含字母数字,下划线和短划线的字符串,适用于URL。
答案 1 :(得分:1)
此响应不使用正则表达式,但也应该有效,可以更好地控制要过滤的符号类型。它使用unicodedata模块通过检查字符的类别来删除所有符号。
import unicodedata
# See http://www.dpawson.co.uk/xsl/rev2/UnicodeCategories.html for character categories
replace = ('Sc', 'Sk', 'Sm', 'So', 'Zs')
def symbolsReplaceDashes(text):
L = []
for char in text:
if unicodedata.category(unicode(char)) in replace:
L.append('-')
else: L.append(char)
return ''.join(L)
如果范围超出基本的ASCII字母数字字符,您可能需要使用类似urllib.quote(output.encode('utf-8'))
的内容来编码字符。
答案 2 :(得分:1)
如果要转义要用于网址的字符串,请使用urllib.quote()
或urllib.quote_plus()
,而不是正则表达式。对于更复杂的查询,您可能希望使用urllib.urlencode()
构建网址。您可以使用urllib.unquote()
和urllib.unquote_plus()
来反转报价。