用条件替换单词

2024-05-15 10:46:35 发布

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

我需要检查一行是否包含一个数字(n)、一个空格和列表中的一个单词(house、houses、casa、case),以便将其替换为

  • 10.00如果数字等于1
  • 10.00*n其中n是一个不等于1的数字

例如:

H_C
4 case        
9 apart          
1 house    

预期产量

H_C              New_H_C
4 case          40.00  
9 apart          9 apart
1 house          10.00

我曾尝试使用re.search查看列表(house、house、case、casa)和strip的组合来添加.00,但我对如何使用它来确定条件10.0010.00*n感到困惑

我希望你能帮助我


Tags: re列表newsearch数字条件单词house
1条回答
网友
1楼 · 发布于 2024-05-15 10:46:35

您可以执行以下正则表达式:

words = ['house', 'houses', 'casa', 'case']

# extract the relevant numbers
s = df.H_C.str.extract(f'(\d+) ({"|".join(words)})')[0].astype(float)
# multiply with 20

# you can search for `format` string function
df['New_H_C'] = np.where(s.notna(),s.apply(lambda x:'{:.02f}'.format(x)), 
                         df['H_C'])

输出:

       H_C  New_H_C
0   4 case     4.00
1  9 apart  9 apart
2  1 house     1.00

相关问题 更多 >