list = ["/x01", "/x30", "/x30", "/x53", "/x46", "/x46", "/x46", "/x30", "/x30", "/x30", "/x31", "/x46", "/x46", "/x0D"]
for x in list:
x.replace("[","").replace("]","").replace('"','').replace(" ","").replace(",","").replace("[","")
这没用。你能解释一下我可能做错了什么,并告诉我是否有更有效的方法来获得输出: “/x01/x30/x30/x53/x46/x46/x30/x30/x30/x31/x46/x46/x0D”
使用
str.join
:看看你的代码,我想你是在尝试对列表的
^{pr2}$str.replace
应用str
版本。但这样做会很奇怪,最好使用str.join
:上面的字符串只是list对象的一个表示。在
您应该使用translate(None,nuke_list_string)
两个原因:
replace执行一个1对1的替换,每次替换都会分配一个新的字符串,然后返回该字符串,如果像示例中那样链接一系列替换,则会导致大量开销。
translate通常需要一对一的映射,即translate('ABC','ABC')会将字符串'a brown cow'转换为'a brown cow'。但是,如果指定None作为新映射,它将删除它找到的字符。
下面是一个例子:
产生:
^{pr2}$第一个问题是
replace
没有就地更改字符串,它只返回一个新字符串。你忽略了那个新的字符串。在你想要的是:
您可以使用
translate
来简化这个过程,或者使用不同的方法过滤掉字符,比如理解或filter
调用。但结果是一样的。在更大的问题是你想做的事情毫无意义。列表中没有一个元素包含
[
、]
、"
等字符。您可能混淆了列表的字符串表示和列表本身。在如果你想加入一个列表的成员,或者产生一个列表的任何表示,而不是默认的
^{pr2}$repr
,只需显式地join
它们。例如,这样可以得到您想要的:…这得到了不同的表示:
…这与
repr
大致相同:相关问题 更多 >
编程相关推荐