python 2.7 去掉括号

python 2.7 remove brackets

我有一个以 { 开头并以 } 结尾的字符串。这个括号总是在最前面和最后而且必须出现,它们不能出现在中间。如下:

{-4,10746,.....,205}

{-3,105756}

去掉括号接收最有效的方法是什么:

-4,10746,.....,205
-3,105756
s[1:-1]     # skip the first and last character

您也可以使用replace方法。

In [1]: a = 'hello world'

In [3]: a.replace('l','')
Out[3]: 'heo word'

这里有一个相当迂回的方式来满足您的需求:

l = {-3,105756}
new_l = []
for ch in l:
    if ch!='{' and ch!= '}':
       new_l.append(ch)

for i,val in enumerate(new_l):
    length = len(new_l)
    if(i==length-1):
        print str(val)
    else:
        print str(val)+',',

我敢肯定有许多单行代码可以满足您的需求,但这是后台发生的事情,并且还会删除大括号,而不管它们在输入字符串中的位置如何。

附带说明一下,@dlask 的回答可以很好地解决您的问题。

但是如果您真正想要的是将该字符串(看起来像一个集合)转换为一个集合对象(或其他一些数据结构),您还可以使用 ast.literal_eval() 函数 -

>>> import ast
>>> s = '{-3,105756}'
>>> sset = ast.literal_eval(s)
>>> sset
{105756, -3}
>>> type(sset)
<class 'set'>

documentation-

ast.literal_eval(node_or_string)

Safely evaluate an expression node or a Unicode or Latin-1 encoded string containing a Python literal or container display. The string or node provided may only consist of the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.

因为你不清楚有两种可能是字符串或者集合

如果是集合,这可能有效:

a= {-4, 205, 10746}

",".join([str(s) for s in a])
output='10746,-4,205'

如果它是一个字符串,这将起作用:

a= '{-4, 205, 10746}'
a.replace("{","").replace("}","")
output= '-4, 205, 10746'

由于设置中没有顺序输出就是这样

最安全的方法是剥离:

'{-4, 205, 10746}'.strip("{}")