Преобразовать строку в список с переменными - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь преобразовать строку в список.

stringvalue = '[54.0, country, state]'

Я сталкивался со многими ответами, но у всех строк есть такие цитаты

[54.0, 'country', 'state']

Итак, моя идея в том, что я хочу такой список

[54.0, country, state]

По сути, страна и штат - это переменные, которые будут разрешены в программе.

Осмотревшись, я наткнулся на ответ, который удаляет кавычки (') вокруг строки, используя это

class MyStr(str):
    """ Special string subclass to override the default representation method
        which puts single quotes around the result.
    """
    def __repr__(self):
        return super(MyStr, self).__repr__().strip("'")

MyStr(stringvalue)

Это привело к выводу, который выглядит как список (без кавычек)

[54.0, country, state]

Но тип __main__.MyStr .- не список того, что я ищу

Есть мысли о том, как к этому подойти?

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Начните с извлечения полей:

import re
fields = re.findall(r"(?:([^,\s]+)\s*,?\s*)+?", stringvalue[1:-1])
#['54.0', 'country', 'state']

Получить ссылку на словарь локальных переменных:

country = 'USA'
state = 'MA'
variables = vars()

Поиск полей в словаре. Если они есть, принесите их значения. Если нет, рассматривайте их как числа:

[variables[x] if x in variables else float(x) for x in fields]
#[54.0, 'USA', 'MA']
0 голосов
/ 08 ноября 2018

попробуйте это.

mystr = 'random'
mylist = []
for char in mystr:
    mylist += char

print(mylist)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...