Python - конвертировать строку в список - PullRequest
0 голосов
/ 13 октября 2018

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

flist = os.listdir("C:/Server")
conn.send(bytes("str(flist), "UTF-8"))        

Это отправляет список клиенту, клиент преобразует его в строку.(что-то вроде этого: ['Arcer.exe', 'Launcher.exe', 'Document.txt']) Теперь, как мне преобразовать строку обратно в список?

string = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
list = []
list = string.convert  #pseudo method
print(list[0]) #Arcer.exe
print(list[1]) #Launcher.exe

Ответы [ 3 ]

0 голосов
/ 13 октября 2018

Вы можете использовать literal_eval из ast модуля:

from ast import literal_eval
string = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
newList = literal_eval(string)
print(newList)

Вывод:

[' Arcer.exe', 'Launcher.exe', 'Document.txt']

Если вы не хотите использовать модуль ast, другой способсделать это - снять скобки с вашей строки, а затем разделить ее на каждый запятую , следующим образом:

string = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
newList = string[1:-1].replace("'","").split(",")
print(newList)

Это даст вам тот же результат, что и выше:

[' Arcer.exe', ' Launcher.exe', ' Document.txt']
0 голосов
/ 13 октября 2018

Я бы порекомендовал использовать модуль json.

Для отправки списка вы можете изменить str(flist) на json.dumps(flist), затем на другом конце вы можете перезагрузить список, используя flist = json.loads(string)

0 голосов
/ 13 октября 2018

Во-первых, никогда имя переменных list или string.Первый - это имя встроенного класса, второй - модуль в стандартной библиотеке.

Следует избегать использования строковых представлений переменных Python, поскольку их чтение и запись не будут эффективными.Но, если у вас нет другого выбора, вы можете использовать ast.literal_eval:

from ast import literal_eval

x = "[' Arcer.exe', 'Launcher.exe', 'Document.txt']"
y = literal_eval(x)

print(y, type(y))

[' Arcer.exe', 'Launcher.exe', 'Document.txt'] <class 'list'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...