在python中解析以特定字符开头、长度为N的字符串

2024-06-28 11:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着模仿这个 Find strings of length 10 with regex

用这个

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

在运行上述代码之前,更新的代谢产物列表如下所示:

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;

Tags: offindstringsupdatedmetabolitecpd00004cpd00009cpd00001
2条回答

如果您想用分号分隔的数据创建一个列表,那么应该改用re.split

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

输出

['cpd00001', 'cpd00009', 'cpd00015', ...]

不要使用行首和行尾锚(^$),因为在您的文件中,同一行中有多个匹配项:

re.findall(r'cpd\d{5}', updated_metabolite)

相关问题 更多 >