Как преобразовать строку в список? - PullRequest
1 голос
/ 07 ноября 2019

У меня есть список:

sample = ["['P001']"]

Как преобразовать его в:

sample = [["P001" ]]

Я пытался [[x] for x in sample], но вывод [["[P001]"]]

Отредактировано: мне очень жаль за неудобства, потому что я сделал ошибку в вопросе, который я задаю. На самом деле это "P001" строка. Снова извините.

Ответы [ 3 ]

0 голосов
/ 07 ноября 2019

Это массив строк, и каждая строка состоит из шаблона типа «[P001]». Вам нужно перебрать внешний массив и выполнить сопоставление с каждым элементом, чтобы получить внутреннее значение, в данном случае «P001». Затем вы можете добавить значение, как вам нравится.

s = ["[P001]", "[S002]"]
result = []
import re
for i in s:
    r = re.match(r"\[(.*?)\]", i)
    if r:
        result.append([r.group(1)])

print(result)
[['P001'], ['S002']]
0 голосов
/ 07 ноября 2019

Это можно сделать, используя регулярное выражение для буквенно-цифровых символов:

sample = ["[P001,P002]","[P003,P004]"]

import re
sample = [re.findall("\w+", sublist) for sublist in sample]
0 голосов
/ 07 ноября 2019

Если вы хотите вывод как это [['P001']], вы можете сделать это:

>>> sample = ["[P001]"]
>>> [[sample[0].strip('[\]')]]
[['P001']]

Но если вы хотите вывод как [[P001]], я не знаю, возможно ли это. P001 не является типом Python, и если P001 является определенной переменной ранее, то измененный список будет содержать значение P001, а не само имя. Например:

>>> P001 = 'something'
>>> sample = ["[P001]"]
>>> [eval(sample[0])]
[['something']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...