我想從 Pandas 資料框中的縮寫中洗掉點,但如果點位于較長的單詞之間,則不會。所以'ltd'和'ltd'。應該導致“ltd”但“longword”。應該保持不變。
我現在擁有的正則運算式是(?:\b\w{1,3})(\.). 從這個正則運算式中,我想用一個空字串替換組 1 中的結果。我怎么知道str.replace(r'(?:\b\w{1,3})(\.)', '')只考慮第二組?
uj5u.com熱心網友回復:
您可以使用
df['col'] = df['col'].str.replace(r'\b([a-zA-Z]{1,3})\.', r'\1', regex=True)
## Or, to account for any Unicode letters:
df['col'] = df['col'].str.replace(r'\b([^\W\d_]{1,3})\.', r'\1', regex=True)
請參閱正則運算式演示。詳情:
\b- 單詞邊界([^\W\d_]{1,3})- 第 1 組 (\1):一個、兩個或三個字母\.- 一個點。
替換中的\1是指第 1 組值。
請注意,您應該提供regex=True引數以Series.str.replace避免出現FutureWarning: The default value of regex will change from True to False in a future version 中描述的警告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/425814.html
