我想建立從結構正則表達式是這樣的:切片串在Python列表
[['mirna', 'or', 'microrna'], 'or', 'lala']
...我想提取的「或」遞歸構建我正則表達式的左側部分。 正如你所看到的,有時它是另一個嵌入列表,有時它是一個字符串。
我的正則表達式應該是這樣的:
((mirna|microrna)|lala)
所以這是我的算法(遞歸的,因爲我從來不知道有多深,我的結構):
def _buildRegex(self, request):
if not isinstance(request, str):
print(request)
print('request not a str')
request = request[0]
for i, e in enumerate(request):
self._print(i)
self._print(e)
if e == 'or':
self._print('OR found')
if isinstance(request, str):
print('left is str')
left = request
else:
print('left is list')
left = request[0:i]
if isinstance(request, str):
print('right is str')
right = request
else:
print('right is list')
right = request[i+1:len(request)-1]
print('(')
if isinstance(left, list):
self._buildRegex(left)
else:
print(left)
print('|')
if isinstance(right, list):
self._buildRegex(right)
else:
print(left)
print(')')
而這就是我得到:
[[['mirna', 'or', 'microrna'], 'or', 'lala']]
request not a str
0
['mirna', 'or', 'microrna']
1
or
OR found
left is list
right is list
(
[['mirna', 'or', 'microrna']]
request not a str
0
mirna
1
or
OR found
left is list
right is list
(
['mirna']
request not a str
0
m
1
i
2
r
3
n
4
a
|
[]
request not a str
我想當我提取單個詞切片轉換成一個列表。 但是,我如何區分列表中的最後一個單詞? 我花了很多時間,找不到解決方案,我完全失去了。
Yo不客氣。對不起,我無法給你一個更徹底的細分你自己的代碼。 –
@MillieSmith - 感謝我的輸入,所以我可以發現我的錯誤! – Crispin
@ waterboy5281沒問題。 –