我正在使用Python。我想通过使用分隔符“ BEGIN”和“ END”来拆分包含n个部分的文件。
文件包含:
BEGIN
ABC ABC ABC
END
BEGIN
XYZ
XYZ
END
BEGIN
A B C
END
使用上面的文件,我希望将其作为输出:
文件1:
BEGIN
ABC ABC ABC
END
文件2:
BEGIN
XYZ
XYZ
END
文件3:
BEGIN
A B C
END
我认为可以使用REGEX来完成此操作,但是在上面的示例中,我找不到能够识别3个组(BEGIN ... END)的模式。
如果您能帮助我,我将不胜感激。
谢谢
答案 0 :(得分:0)
您可以将re.findall
与re.DOTALL
标志一起使用,以允许.
匹配换行符,并与re.MULTILINE
标志一起使用,以允许^
和{{1} }以匹配行的开头和结尾,并假设输入文件的内容存储在变量$
中:
content
答案 1 :(得分:-1)
您可以使用类似的内容:
Sub Demo()
Dim lo As ListObject
Dim SearchRange As Range
Dim LookupRange As Range
Dim SearchTerm As Variant
Dim LookupItem As Variant
Dim idx As Variant
Set lo = Worksheets("Tables").ListObjects("Table1")
Set SearchRange = lo.ListColumns("Column2").DataBodyRange
Set LookupRange = lo.ListColumns("Column8").DataBodyRange
SearchTerm = "YourSearchTerm"
idx = Application.Match(SearchTerm, SearchRange, 0)
If Not IsError(idx) Then
LookupItem = LookupRange.Cells(idx, 1)
' use the result as you wish
Debug.Print LookupItem
Else
' SearchTerm not found. What now?
End If
'For completeness, heres how to reference a range of columns
Dim VLookupRange As Range
Set VLookupRange = lo.Parent.Range(lo.ListColumns("Column2").DataBodyRange, lo.ListColumns("Column8").DataBodyRange)
Debug.Print VLookupRange.Address
End Sub
上面将创建3个文件
import re
with open('original.txt') as f:
s = f.read()
m = re.findall("BEGIN.*?END", s, re.DOTALL)
n = 1
for x in m:
with open(f"{n}.txt", "w", encoding='utf8' ) as f:
f.write(x)
n+=1
包含文字1.txt
2.txt
3.txt
。