我試圖將文本輸入轉換爲保留其結構的嵌套列表。目前我有一個函數需要一個文本和一個期望的「深度」,並輸出這個深度的嵌套列表,在每一個新行,句子或單詞處打破文本。如何將文本轉換爲嵌套列表
def text_split(text, depth):
depth_list = [' ', '.', '\n']
if isinstance(text, str):
text = text.strip('. ')
text = text.split(depth_list[depth])
if depth >= 0:
depth -= 1
for ix, item in enumerate(text):
item = item.strip('. ')
text[ix] = text_split(item, depth)
return text
這需要文本,如
text1 = """acabei de ler um livro. um diário.
mas a liberdade sempre chamou fountaine mais forte.
a cada viagem fountaine ía mais longe. aprendeu a andar de bicicleta e viajou o sul da frança.
esse é o tipo de pergunta feita na última edição do prêmio Loebner, em que participantes precisam responder à algumas questões feitas pelo júri.
o que tem de especial nessa competição é que ela não é para humanos, mas sim para robôs. o prêmio Loebner é uma implementação do teste de Turing.
"""
到
[ [[['acabei'], ['de'], ['ler'], ['um'], ['livro']], [['um'], ['diário']]],
[ [ ['mas'],
['a'],
['liberdade'],
['sempre'],
['chamou'],
['fountaine'],
['mais'],
['forte']]],
[ [ ['a'],
['cada'],
['viagem'],
['fountaine'],
['ía'],
['mais'],
['longe']],
[ ['aprendeu'],
['a'],
['andar'],
['de'],
['bicicleta'],
['e'],
['viajou'],
['o'],
['sul'],
['da'],
['frança']]],
[[['']]], ... ]]]]
現在這可能不是這樣做的最好,最優雅的方式,它有一些問題,如在\n
被分割之後出現的[[['']]]
(這可以通過使用.splitlines()
來解決,但我無法找到一種很好的調用方式這個方法在遞歸函數中)。
這樣做的更好方法是什麼?我應該使用嵌套列表嗎? (我打算在此後迭代)。感謝您的建議!
你爲什麼希望所有的深度,例如爲什麼列表中只有一個單詞呢? – AChampion
@AChampion確實,這是沒有必要保持結構!這不是要求。感謝您指出! –