def symbolsReplaceDashes(text):
모든 공백과 기호를 하이픈으로 바꾸고 싶습니다. URL과 함께 사용하기 때문에.파이썬에서 정규 표현식을 사용하려면 어떻게해야합니까?
def symbolsReplaceDashes(text):
모든 공백과 기호를 하이픈으로 바꾸고 싶습니다. URL과 함께 사용하기 때문에.파이썬에서 정규 표현식을 사용하려면 어떻게해야합니까?
import re
text = "this isn't alphanumeric"
result = re.sub(r'\W','-',text) # result will be "this-isn-t-alphanumeric"
\W
클래스 영숫자와 밑줄 ([a-zA-Z0-9_]
)으로 구성 \w
클래스의 역이다. 따라서 \W
과 일치하지 않는 문자를 대시로 바꾸면 영숫자, 밑줄 및 대시로만 구성된 문자열이 URL에 적합합니다.
이 응답은 정규식을 사용하지는 않지만 필터링 할 기호 유형을보다 잘 제어 할 수 있어야 작동합니다. 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'))
같은 것을 사용해야 할 수도 있습니다.
regex 대신 URL에 사용할 문자열을 이스케이프하려면 urllib.quote()
또는 urllib.quote_plus()
을 사용하십시오. 더 복잡한 쿼리의 경우 urllib.urlencode()
을 사용하여 URL을 작성해야 할 수 있습니다. urllib.unquote()
및 urllib.unquote_plus()
으로 견적을 취소 할 수 있습니다.
OP는 손실이있는 변환을 요구하기 때문에 문자열을 이스케이프하고 싶지 않으며 포스트 제목 등과 같은 항목에서 "멋진"URL을 생성하려고합니다. – Amber
"symbols"을 정의하십시오. – msw