Python中的字符串或列表替换

3

如何处理字符串:

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

如果我要用数字 1, 2, 3, 4 替换这些值,该怎么做?

同样的操作,如果我想针对一个列表进行,应该怎么做?


2
你是在谈论一个字符串 "(\"h1", \"h2\", \"h3\", \"h4\")" 吗?还是一个字符串列表? - Justin L.
1
我不确定你在这里问的是什么... 你是想简单地从字符串中删除前导的'h'吗?还是你有一个长字符串,需要将其中所有的'h1'实例替换为'1'? - MikeD
2个回答

5
 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的新手。 :) - myClone
给Justin:我为我的问题不够清晰道歉。这部分是因为我不确定自己想要什么。我有一个R脚本,我正在尝试翻译它。(我知道有rPy可以自动处理这些东西,但我正在尝试通过翻译来学习Python)。你提供的看起来很接近。在R中,它的读法是:hClasses <- as.numeric(gsub("h", "", segmentsH))。我尝试了你的方法,但写成了这样:segmentsH = ["h1", "h2", "h3", "h4"] <br> hClasses = [ int(s.replace("h","")) for s in segmentsH ]。完美地解决了问题。非常感谢! - myClone

3
这将去除所有非数字字符(不仅限于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:感谢您提供这个替代方案。这可能在我的脚本中以后会派上用场。:) 感谢您的帮助。 - myClone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接