Разобрать список в python для строки, которая начинается с определенных символов и имеет длину N - PullRequest
0 голосов
/ 26 июня 2018

Я пытался подражать этому Найти строки длиной 10 с регулярным выражением

с этим

for char in updated_metabolite:
    found_all = re.findall('^cpd.{5}$', updated_metabolite)

список updated_metabolites выглядит так до запуска приведенного выше кода:

cpd00001;cpd00009;cpd00015;cpd00041;cpd00095;cpd00982;cpd02333
cpd00001;cpd00003;cpd00004;cpd00067;cpd00075;cpd00985
cpd00003;cpd00004;cpd00067;cpd15560;cpd15561
cpd00005;cpd00006;cpd00067;cpd14938;cpd17051
cpd00001;cpd00002;cpd00003;cpd00004;cpd00008;cpd00009;cpd00067;cpd00149;cpd03913;cpd03914
cpd00005;cpd00006;cpd11669;cpd17097
cpd00005;cpd00006;cpd00067;cpd00129;cpd02431
cpd00001;cpd00015;cpd00067;cpd00129;cpd00858;cpd00982
cpd00005;cpd00006;cpd00011;cpd00017;cpd00060;cpd00067;cpd00791;cpd02083;cpd03091;

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Если вы хотите создать список из данных, разделенных точкой с запятой, вам следует использовать re.split.

lst = re.split(';|\n', updated_metabolite)

Выход

['cpd00001', 'cpd00009', 'cpd00015', ...]
0 голосов
/ 26 июня 2018

Не используйте привязки начала и конца строки (^ и $), поскольку в вашем файле несколько совпадений в одной строке:

re.findall(r'cpd\d{5}', updated_metabolite)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...