Beginning
Line 2
Line 3
Line 4
Line 5
Line 6
End从2号线到6号线。不能拯救我的灵魂。A是我正在搜索的保存的字符串。
b = re.findall(r'Beginning(.*?)End', a)我知道这是因为换行符的缘故,但是我该如何检测并继续使用换行符呢?我试过了,但我不确定我应该如何使用MULTILINE或DOTALL。什么都没变。
我如何让它把第2行到第6行放在b中?
要添加,这将发生多次通过相同的文件,我需要执行这种搜索和提取技术。我没有其他简单的方法可以做到这一点,因为需要进一步查看第2-6行中的信息,以提取将放入csv文件中的数据。由于一些数据包含小时,而一些数据不包含小时,也就是不可用,因此我需要能够区分这两种情况。
发布于 2016-11-22 08:12:39
string = """Beginning
Line 2
Line 3
Line 4
Line 5
Line 6
End
"""
lines = string.splitlines()
answer = []
flag = False
for line in lines:
line = line.strip()
if not line: continue
if line == "Beginning":
flag = True
continue
if line == "End": flag = False
if not flag: continue
answer.append(line)输出:
In [209]: answer
Out[209]: ['Line 2', 'Line 3', 'Line 4', 'Line 5', 'Line 6']发布于 2018-07-06 12:37:48
您可以创建一个函数,该函数接受一个多行字符串,然后是一个开始行和一个结束行。
def Function(string, starting_line, ending_line):
if "\n" in string: #Checks for whether or not string is mult-line
pass
else:
return "The string given isn't a multiline string!" #If string isn't multiline, then Function returns a string explaining that string isn't a multi-line string
if ending_line < starting_line: #Checks if ending_line < starting_line
return "ending_line is greater than starting_line!" #If ending_line < starting_line, then Function returns a string explaining that ending_line > starting_line
array = [] #Defines an array
for i in range(len(string)): #Loops through len(string)
if list(string)[i] = "\n": #Checks whether list(string)[i] = a new line
array.append(i) #Appends i to array
return string[array[starting_line - 1]::array[ending_line - 1]]
print(Function(a, 3, 7))此代码应返回:
Line 1
Line 2
Line 3
Line 4
Line 5
Line 6https://stackoverflow.com/questions/40731719
复制相似问题