【问题标题】:Why replace() doesn't work in my Python function? in one liner为什么 replace() 在我的 Python 函数中不起作用?在一个班轮中
【发布时间】:2019-05-20 19:43:11
【问题描述】:

我正在尝试用一个班轮解决已经提出的问题link。但没有出人意料。

d={'Old': 'New', 'old': 'new'}
strr='Old, not old'

尝试

[ strr.replace(k,v) for k,v in d.items() if k in strr] 
Out[19]: ['New, not old', 'Old, not new']

预期

New, not new

【问题讨论】:

  • 它可以工作,并且按照你写的做。问题是,您一次只能替换使用 1 个键值对。

标签: python


【解决方案1】:

因为您使用的是list generator,它正在构造一个字符串列表,其中每个字符串仅包含字典中的一个替换。只需使用普通循环逐字替换所有内容:

d={'Old': 'New', 'old': 'new'}
strr='Old, not old'

for k, v in d.items():
    strr = strr.replace(k, v)

strr

将返回:

'New, not new'

【讨论】:

  • 一个班轮不可能吗?
  • 好吧,从技术上讲,您可以在一行中写出for k, v in d.items(): strr = strr.replace(k, v)。但这是糟糕的代码,你应该避免这种情况。即使是简单的任务也可以有几行,特别是如果它提高了代码的可读性。
猜你喜欢
  • 2019-10-06
  • 2017-09-10
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-06
相关资源
最近更新 更多