我有一個names標題Dr.在錯誤位置的串列。
因此我想
- 回圈串列元素以替換
Dr.,或Dr.替換 - 同時還添加/移動
Dr.到相應字串的開頭。
我的結果相當令人失望。re.sub()甚至是正確的方法嗎?
names = ['Johnson, Dr., PWE', 'Peterson, FDR', 'Gaber, Dr. GTZ']
for idx, item in enumerate(names):
names[idx] = re.sub(r' Dr.(,)? ', ' Dr. ', item)
print(names)
['Johnson, Dr. PWE', 'Peterson, FDR', 'Gaber, Dr. GTZ']
desired_names = ['Dr. Johnson, PWE', 'Peterson, FDR', 'Dr. Gaber, GTZ']
uj5u.com熱心網友回復:
您可以使用 2 個捕獲組,并使用替換中恢復的那些來獲得正確的順序。
([^,\n] ,\s*)(Dr\.),?\s*
([^,\n] ,\s*)捕獲除組 1,中的任何字符或換行符,然后匹配逗號和可選的空白字符(Dr\.)Dr.在第 2 組中捕獲,?\s*匹配可選的逗號和空格字符
正則運算式演示| Python 演示
例子
import re
names = ['Johnson, Dr., PWE', 'Peterson, FDR', 'Gaber, Dr. GTZ']
for idx, item in enumerate(names):
names[idx] = re.sub(r'([^,\n] ,\s*)(Dr\.),?\s*', r'\2 \1', item)
print(names)
輸出
['Dr. Johnson, PWE', 'Peterson, FDR', 'Dr. Gaber, GTZ']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/465442.html
上一篇:pythonpandas中的Mumbojumbo.rolling().max().groupby()組合
下一篇:如何從以下模型函式中洗掉回圈?
