【问题标题】:String or list substitution in PythonPython中的字符串或列表替换
【发布时间】:2010-07-01 18:52:02
【问题描述】:

我将如何去取一个字符串:

("h1", "h2", "h3, "h4")

并将这些值替换为数字1, 2, 3, 4

相应地,我将如何执行相同的操作,但不是在列表中?

【问题讨论】:

  • 你说的是字符串"(\"h1", \"h2\", \"h3\", \"h4\")"吗?还是字符串列表?
  • 我不太确定您在这里问什么...您是否只想从字符串中删除前导“h”?还是您的字符串很长,需要将其中的所有 'h1' 实例替换为 '1'?

标签: python string list substitution


【解决方案1】:
 to_replace = ["h1","h2","h3","h4"]
 replaced = [ int(s.replace("h","")) for s in to_replace ]

如果这是你想要的。

不是很清楚;我假设您的输入实际上不是字符串"(\"h1\", \"h2\", \"h3\", \"h4\")",而是字符串列表。

我不确定您的第二个问题是什么意思,因为它似乎与第一个问题相同。

我会相应地更新我的答案 =)

【讨论】:

  • 致 MikeD:是的,基本上这就是我想做的。为了提供一些背景信息,我正在尝试将 R 代码翻译成 Python,我想做的是从 3 个字符串/列表/每个字符串/列表包含 4 个元素的任何内容中构建一个多维数组。我想首先,构建数组更好的是:列表还是字符串?请原谅我的神秘描述,因为我是 Python 的 n00b。 :)
  • 致贾斯汀:对于我不清楚的问题,我深表歉意。部分原因是我不确定我追求的是什么。我有一个要翻译的 R 脚本。 (我知道有 rPy 可以自动处理这些东西,但我正在尝试通过翻译来学习 Python)。你提供的看起来很接近。在 R 中它是这样写的:hClasses hClasses = [ int(s.replace("h",""))对于 s 在段H]。工作得很好。非常感谢!
【解决方案2】:

这将删除所有非数字字符(不仅是h):

>>> s = ["h1", "h2" , "h3" , "h4"]
>>> [int(filter(lambda c: c.isdigit(), x)) for x in s]
[1, 2, 3, 4]

>>> s = ["x1", "b2" , "c3" , "h4"]
>>> [int(filter(lambda c: c.isdigit(), x)) for x in s]
[1, 2, 3, 4]

【讨论】:

  • ChristopeD:感谢您提供这个替代解决方案。稍后在我的脚本中这可能会派上用场。 :) 感谢您的帮助。
猜你喜欢
  • 2019-01-30
  • 2019-02-26
  • 2010-10-20
  • 1970-01-01
  • 2018-06-02
  • 2013-06-20
  • 2021-06-17
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多