繁体   English   中英

如何在python中的regex(findall)中使用枚举?

[英]how to use enumerate with regex(findall) in python?

我有一个txt文件,如下所示:

#onetwothree.txt
>one 
QWERTYUIOP
>two
ASDFGHJKL
>three
ZXCVBNM
...

我想将txt文件分成几个文件,如下所示:

#one.txt
>one
QWERTYUIOP

#two.txt
>two
ASDFGHJKL

#three.txt
>three
ZXCVBNM

这是我编写的代码,

import re
with open("onetwothree.txt") as file:
 name=re.findall(r'\>[^\n]+',file.read())
 sequence=re.findall(r'name[ind][^/n]+' for ind in enumerate(name), file.read())
          .
          .
          .

我知道下一部分有问题。

sequence=re.findall(r'name[ind][^/n]+' for ind in enumerate(name), file.read())

我想使用re.findall创建一个列表, enumerate ,下面的列表是我想要的。

>>>print (seq)
["QWERTYUIOP","ASDFGHJKL","ZXCVBNM"]

我该如何解决此代码sequence=re.findall(r'name[ind][^/n]+' for ind in enumerate(name), file.read())

首先,您不能使用read()两次读取文件,第二次调用该文件时,它将返回一个空字符串。

另外,我认为您对re.findall理解不re.findall 它仅需要2个参数(正则表达式,字符串)。

您可以一次完成任务,而无需两次调用findall

s = '''>one 
QWERTYUIOP
>two
ASDFGHJKL
>three
ZXCVBNM
''' # replace this with file.read()

res = re.findall(">([^\n]+)\n(\w+)",s)     #each regex in paren constitutes a group
print(res) 
#[('one ', 'QWERTYUIOP'), ('two', 'ASDFGHJKL'), ('three', 'ZXCVBNM')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM