python 2.7删除括号

时间:2015-07-08 05:57:01

标签: python

我的字符串以{开头,以}结束。这个括号总是在第一个也是最后一个必须出现,它们不能出现在中间。如下:

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

{-3,105756}

删除要接收的括号的最有效方法是什么:

-4,10746,.....,205
-3,105756

6 个答案:

答案 0 :(得分:2)

s[1:-1]     # skip the first and last character

答案 1 :(得分:1)

您也可以使用replace方法。

In [1]: a = 'hello world'

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

答案 2 :(得分:1)

由于你不清楚有两种可能性,它可能是一个字符串或一组

如果它是一个集合,则可能有效:

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'

由于集合中没有顺序,输出就是那样

答案 3 :(得分:0)

这是一种相当迂回的方式,可以完全满足您的需求:

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)+',',

我确信有很多单行代码可以提供你想要的东西,但这是后台发生的事情,也会删除括号而不管它们在输入字符串中的位置。

答案 4 :(得分:0)

只是旁注,@ 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)

     

安全地评估表达式节点或包含Python文字或容器显示的Unicode或Latin-1编码字符串。提供的字符串或节点可能只包含以下Python文字结构:字符串,数字,元组,列表,dicts,布尔值和None。

答案 5 :(得分:0)

最安全的方法是剥离:

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