如何使用Python将DF列中的一个单词替换为另一个单词,而不包括子字符串

2024-09-30 14:34:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在Python中实现SAS-TRANWRD函数的功能,用另一个单词替换一个单词

我曾尝试使用Python中可用的str.replacereplace方法,但这些方法除了替换单词外,还替换了子字符串

代码:

DICT1 = {'NZ':'NEW ZEALAND'}

for k,v in DICT1.items():
    df['COL1'] = df['COL1'].str.replace(k,v)

例如:

NZ COMPANY LIMITED --> NEW ZEALAND COMPANY LIMITED - *(Expected)*

GONZU ENTERPRISE --> GONEW ZEALANDU ENTERPRISE - *(Unexpected)*

在SAS中,会注意这个问题,因为TRANWRD函数只在找到空间边界后替换单词

有人能帮助我们在Python中实现类似的功能吗


Tags: 方法函数功能dfnew单词companyreplace
1条回答
网友
1楼 · 发布于 2024-09-30 14:34:31

使用利用单词边界元字符\b的正则表达式搜索模式

例如:

import re

seekword = "Bob"
rplcword = "Bubba"

phrase = "Hello there Bob"
phrasex = re.sub(r"\b"+seekword+r"\b", rplcword, phrase)

print (phrasex)

例2:

循环使用多个短语和替换

import re

PHRASES = \
[ 'Bill is from AU' \
, 'Bob is from NZ' \
, 'Bobby visited NZA' \
]

WORDMAPS = \
{ 'Bob': 'Bubba' \
, 'NZ': 'NEW ZEALAND'
}

for index, phrase in enumerate(PHRASES):
    
    phrasex = phrase
    
    for k,v in WORDMAPS.items():
        phrasex = re.sub(r"\b"+k+r"\b", v, phrasex)
        
    PHRASES[index] = phrasex
        
print (PHRASES)

相关问题 更多 >