У меня есть данные многих предложений, касающихся одного примера в качестве следующего предложения, я хочу, чтобы разделить его на 2 подразделам предложений:разделительные предложения в суб-предложения, используя пакет повторно в Python
И весь плазмы и d < 1,006 г/мл плотность плазмы от 2/2 мышей показывают эту широкую бета-миграционную картину (рис.1B) | T: ** 1SP3E3 | ; | I: ** 1SP3E3 | | L: ** 1SP3E3 | напротив, 3/3 плазмы показывают практически без липидного окрашивания в бета-положении. | T: ** 1SN3E3 | | I: ** 1SN3E3 | | L: ** 1SN3E3 |
разделить его на:
Оба цельной плазмы и г < 1,006 г/мл Плотность фракции плазмы от 2/2 мышей показать эту широкую картину бета-миграции (рис 1 б).
и
в отличие от этого, 3/3 плазмы не показывает практически никакого липидный окрашивания на бета-позиция.
Мой код:
newData =[]
for item in Data:
test2= re.split(r" (?:\|.*?\| ?)+", item[0])
test2 =test2[:-1]
for tx in test2:
newData.append(tx)
print len(newData)
print newData
Однако, я получил 3 пунктов в результате, в том числе ;
. Я проверил исходное предложение и обнаружил, что ;
находится в |T:**1SP3E3| ; |I:**1SP3E3|
, поэтому мне нужно удалить ;
из результата. Я изменил свой код на
test2= re.split(r" (?:\|.*?\| ?;?)+", item[0])
Но я не могу получить правильный результат. Может ли кто-нибудь помочь? Большое спасибо.
Не могли бы вы просто разделить строку на символ трубы и захватить каждый 6-й элемент результирующего списка? Вы ожидаете, что символ трубы будет и в самом тексте? – Evert
're.split (r" (?: \ |. *? \ | [\ S;] *) + ", s)' может вас немного ближе. Это даст вам пустую третью строку, так как вторая серия «блоков кода» на самом деле ничего не расколола. – Evert
Если он дает пустую третью строку, вы можете просто использовать функцию 'filter'. 'result = re.split (r" (?: \ |. *? \ | [\ s;] *) + ", s)' после этого использования фильтр 'result = filter (None, result)' –