[英]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.