Строка Python для перечисления в списке - PullRequest
0 голосов
/ 27 сентября 2019

Я только что натолкнулся на нерешенное решение;)

Я хочу включить строку в список списков.

string = r'ABC:=[[0,0,110],[1,0,0,0],[1,0,0,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];'
new_string = string.strip().split('=')
# now new_string[1][:-1] does look like a list of lists but everything i tried i just got a string.

Может быть, кто-то здесь понял, как я могу его получитькак

data = [[0,0,110],[1,0,0,0],[1,0,0,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]]

Спасибо

Ответы [ 2 ]

5 голосов
/ 27 сентября 2019

Используйте библиотеку ast для преобразования строки в структуру данных:

import ast

# string is a module in python, to avoid aliasing, use
# variable names that ideally don't shadow builtins
mystring = r'ABC:=[[0,0,110],[1,0,0,0],[1,0,0,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];'

# get everything to the right of the = sign, and you don't need the semicolon
mystring = mystring.strip().split('=')[-1].rstrip(';')

# returns a list
mylist = ast.literal_eval(mystring)

[[0, 0, 110], [1, 0, 0, 0], [1, 0, 0, 0], [9000000000.0, 9000000000.0, 9000000000.0, 9000000000.0, 9000000000.0, 9000000000.0]]
1 голос
/ 27 сентября 2019

eval тоже отлично работает.

mystring = r'ABC:=[[0,0,110],[1,0,0,0],[1,0,0,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];'

mystring = mystring.strip().split('=')[-1].rstrip(';')

data = eval(mystring)
print(data)
# output: [[0, 0, 110], [1, 0, 0, 0], [1, 0, 0, 0], [9000000000.0, 9000000000.0, 9000000000.0, 9000000000.0, 9000000000.0, 9000000000.0]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...