2015-07-08 3 views
0

У меня есть отверстие для строки с { и закрытие с }. Эти скобки всегда сначала и, наконец, должны появляться, они не могут появляться посередине. следующим образом:python 2.7 удалить скобки

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

{-3,105756} 

что является наиболее эффективным способом, чтобы удалить скобки, чтобы получить:

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

Из вашего примера это не выглядит как струна. – doru

+0

Что вы хотите сделать после их удаления? –

+0

- это строка или набор – The6thSense

ответ

1

Вы также можете использовать replace метод.

In [1]: a = 'hello world' 

In [3]: a.replace('l','') 
Out[3]: 'heo word' 
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)+',', 

Я уверен, что существуют многочисленные однолинейные коды, чтобы дать вам то, что вы хотите, но это вроде того, что происходит на заднем плане, а также удаляет фигурные скобки независимо от их положения во входной строке.

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)

безопасно оценить узел экспрессии или Unic ode или Latin-1, содержащей литеральный или контейнерный дисплей Python. Представленная строка или узел могут состоять только из следующих литеральных структур Python: строк, чисел, кортежей, списков, dicts, booleans и None.

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' 

С момента повторно нет порядка в наборе вывод, что путь

0

Самый безопасный способ был бы раздеться:

'{-4, 205, 10746}'.strip("{}") 
Смежные вопросы