[英]Python REGEX, reformat a string
我正在嘗試創建一個正則表達式,它將接受一個字符串並替換某些字符
"Hello, Wor--ld! 1$2@3- " -> "hello-wor-ld-1-dollars-2-at-3"
我的代碼:
name = "Hello, World! 1$2@3- "
name = re.sub("[^a-zA-Z0-9]+","-",name.lower())
print(name)
但結果是“hello-world-1-2-3-”
以下是您可以用作解決問題的基礎的代碼:
import re
name = "Hello, World! 1$2@3- "
name = re.sub("[^a-zA-Z0-9@#$&]+", "-", " ".join(name.lower().split()))
dct = {'#': 'number', '@': 'at', '$': 'dollars', '&': 'and'}
name = re.sub(r'[$@#]', lambda x: f"-{dct[x.group()]}-", name)
print(name.strip('-'))
# => hello-world-1-dollars-2-at-3
請參閱Python 演示。
筆記:
" ".join(name.lower().split())
- 刪除前導/尾隨空格,將多個空格縮小到單詞之間的單個出現處,並用空格分割re.sub("[^a-zA-Z0-9@#$&]+", "-", ...)
- 替換除字母數字、 #
、 @
、 $
和&
字符以外的所有一個或多個連續字符帶連字符re.sub(r'[$@#]', lambda x: f"-{dct[x.group()]}-", name)
- 用單詞替換指定的特殊字符name.strip('-')
刪除前導/尾隨連字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.