python - 如何从Python中的字符串中仅替换部分单词
问题描述
我有一个街道名称列表
streetNames = ['WELSESTRAAT', 'HENDRIKLAAN', 'LOMMERWEG']
还有另一个带有街道缩写的列表
streetAbbr = [['WEG', 'WG'], ['STRAAT', 'STR'],['LAAN', 'LN']]
我试图遍历街道名称并用 str 替换 straat,用 wg 替换 weg 等等,但我被困在替换部分,因为只有单词的一部分没有这种方法。
for name in streetNames:
for abbr in streetAbbr:
if str(abbr[0]) in str(name):
name.replace('straat', abbr[1]) #doesn't work
解决方案
您的代码中的问题是您正在替换您正在迭代的变量,这对原始列表没有影响。而是通过索引它重新分配给列表:
d = dict(streetAbbr)
# {'WEG': 'WG', 'STRAAT': 'STR', 'LAAN': 'LN'}
for k,v in d.items():
for i, name in enumerate(streetNames):
if k in name:
streetNames[i] = name.replace(k, v)
print(streetNames)
# ['WELSESTR', 'HENDRIKLN', 'LOMMERWG']
推荐阅读
- python - 如何过滤收件箱并仅下载带有附件的电子邮件
- azure - terraform azurerm 函数应用程序设置 host.json 文档丢失
- android - Telegram JNI 在应用程序中检测到错误:从 UserConfig 和 define.h 更改 max_account_count 后线程线程
- java - 如何使用 Azure SDK 将私有 vnet 或子网与 Java 中的容器实例连接起来?
- javascript - 即使在其上绘制了另一个图像,背景图像也会保留
- opengl - OpenGL重叠丑陋渲染
- java - Spring-Boot Thymeleaf 以 html 格式加载图像,列表不显示
- php - 如何创建创建 OpenVPN 文件的 PHP 脚本(以及 bash 文件的答案)
- c# - 如何反转 DispatcherTimer?
- android - 如何在 Android Studio 的 Activity 中调用 EditText onSelectionChanged 方法