2015-08-08 1 views
-4

Поэтому у меня есть строка:Присвоить часть строки к переменной [Python]

[53,2] 

И я хочу, чтобы отделить его так, чтобы:

x = 52 
y = 2 
+5

У вас есть '[53, 2]', или у вас есть '" [53, 2] "'? '[53, 2]' - это список, '" [53, 2] "' является строкой. – Cyphase

+4

Вы прошли через [Tutorial] (https://docs.python.org/2/tutorial/index.html)? – wwii

+0

Разделение '[53, 2]' на два его элемента 53 и 2 не будет производить 52 и 2. Возможно, вам понадобится математика, или, может быть, вопрос имеет ошибку в формулировке. Не могу сказать. – Paul

ответ

1

Вы называете это строкой, но синтаксис говорит, что это список; поэтому я отвечу на оба :).

Если это строка, вы можете сделать это список, выполнив:

data = "[53, 2]" 
data_stripped = data.strip('[]') # remove '[' and ']'s from the ends 
data_split = data.split(',') # split into a list containing each entry 
data_final = [int(x) for x in data_split] # convert strings to ints 

На данный момент data_final содержит список [53, 2]. Если начальное значение было список уже, вы можете пропустить этот код, и просто назначить его data_final перед запуском следующего кода:

x, y = data_final 

Вот оно! :)

EDIT:

Другой способ разобрать строку будет использовать json.loads:

import json 

data_str = '[53, 2]' 

data = json.loads(data_str) 

data будет тогда список [53, 2]. Тогда вы можете получить x и y точно так же, как и выше:

x, y = data 

Благодаря _habnabit в IRC канале #python на FreeNode указывают на это. :)

2

Легко!

X, y = [53, 2] 

Разве это не Python fun?

Если ваш объект на самом деле является строка, а не список, вы можете безопасно преобразовать его в список:

import ast 
x, y = ast.literal_eval("[53, 2]") 
+0

Для тех, кто задается вопросом, 'ast.literal_eval()' безопасно использовать даже на ненадежном входе, в отличие от 'eval()'. НЕ используйте 'eval'! – Cyphase

0

Предполагая, что у вас есть строка, а не массив/список, который нужно будет replace и split методы ,

mystring="[53,2]" 

x=str.split(mystring,",")[0].replace("[","") 
y=str.split(mystring,",")[1].replace("]","") 
0

В качестве альтернативы:

a=[53,2] 

x=a[0] 
y=a[1] 

print(x,y) 
53 2 

Edit: К сожалению, неправильно ваш вопрос. Цифры - это строковые значения.

Смежные вопросы