python - 在字符串中第一次出现后替换所有出现的字符的最佳方法

标签 python python-3.x

我目前正在这样做:

teststring = "abc-def-ghi-jkl"
pos = teststring.find('-')
newstr = "{}-{}".format(teststring[0:pos], teststring[pos + 1:].replace('-', '_'))

这看起来不必要地笨拙。有没有更Pythonic的方法来做到这一点?

最佳答案

您可以使用str.split:

pre, post = teststring.split('-', 1)
newstr = pre + '-' + post.replace('-', '_')

与您最初的解决方案一样,这仅在字符串中至少有一个 - 时才有效。您可以使用可变长度参数解包来解决此问题:

*pre, post = 'asdfd--saf'.split('-', 1)
newstr = '-'.join(pre + [post.replace('-', '_')])

现在 pre 将是前缀,如果没有破折号,则为空列表。 post 始终是完整后缀,带或不带破折号。

关于python - 在字符串中第一次出现后替换所有出现的字符的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68384562/

相关文章:

python - 如何在 Jupyter notebook 中设置环境变量

python - Azure Databricks python 命令显示当前集群配置

Python - 有没有办法通过一行来追溯文件对象的当前位置

python - 如何创建自定义嵌套字典?

python - 有效地将平面列表分割为多级嵌套列表

python - 如何处理 "un-importing"一个 SINGLE 模块?

python - 如何调整此 DBSCAN 算法 python

django 2.1.3 'django.db.backends.postgis' 不是可用的数据库后端

python - 让父类使用子类记录器名称

python - 自动礼物的循环问题