#python #string #list
#python #строка #Список
Вопрос:
напишите функцию, которая принимает строку в заданном формате и возвращает список в приведенном ниже формате
input: "[(694, 104), (153, 236), (201, 106), (601, 427)]"
o/p:
(694, 104)
(153, 236)
(201, 106)
(601, 427)
я написал приведенный ниже код, но не получил правильного вывода:
def convertor(string):
result = (string.split(" "))[0]
return result
string1 = "[(694, 104), (153, 236), (201, 106), (601, 427)]"
print(convertor(string1.replace("[","").replace("]","")))
Комментарии:
1. Если невозможно импортировать какую-либо встроенную библиотеку, пожалуйста, укажите это в вопросе =)
2. используйте
eval(string1)
Ответ №1:
Вы можете использовать ast.literal_eval
import ast
arr = ast.literal_eval("[(694, 104), (153, 236), (201, 106), (601, 427)]")
for ele in arr:
print(ele)
Вывод
(694, 104)
(153, 236)
(201, 106)
(601, 427)
Комментарии:
1. Спасибо… но можем ли мы получить без использования этой функции literal_eval(), которая мне нужна, без использования какой-либо встроенной функции
2. ну
split,regex,replace
, все, что вы делаете, встроено. Как вы можете что-то сделать, не используя buitins?3. да, вы правы, но вам нужен этот вывод без использования eval() или literal_eva() , так можно ли получить этот ответ без использования этих функций… любое предложение
4. даже я написал приведенный ниже код, используя eval() — def converter(string): return eval(string) res= конвертер(«[(694,104),(153,236),(201,106),(601,427)]») печать (res)
5. код, который вы написали, возвращает формат строки, но мне нужен этот результат в списке.
Ответ №2:
Как насчет использования ast.literal_eval
:
import ast
def convertor(string):
return ast.literal_eval(string)
string1 = "[(694, 104), (153, 236), (201, 106), (601, 427)]"
print(convertor(string1))
Комментарии:
1. но если я использую print(type(string), я получаю <type ‘str’>
2. я не могу использовать какой-либо модуль или встроенную функцию, только я могу использовать встроенную функцию string
Ответ №3:
Самый простой способ добиться этого — использовать eval
(вам не нужно ничего импортировать):
eval(string1)
# -> [(694, 104), (153, 236), (201, 106), (601, 427)]
Но, если вы действительно хотите использовать только str
list
методы and:
def convertor(string):
result = string.strip('[)]').split('), ')
result = [s ')' for s in result]
return result
string1 = "[(694, 104), (153, 236), (201, 106), (601, 427)]"
print(convertor(string1))
# -> ['(694, 104)', '(153, 236)', '(201, 106)', '(601, 427)']
Для воспроизведения точного вывода:
for item in convertor(string1):
print(item)
(694, 104)
(153, 236)
(201, 106)
(601, 427)