разделить список предложение по точке с помощью Python - PullRequest
3 голосов
/ 15 мая 2019

У меня есть список предложений:

['hello', 'I would like to thank you', 'I would like to thank you. By the way']

Мне нужно разбить каждое предложение на список, когда я найду "." .

Например, в приведенном выше примере ожидаемый результат:

['hello', 'I would like to thank you', 'I would like to thank you'. 'By the way']

Я пытаюсь с этим кодом в Python:

def split_pint(result):
    for i in result:
        i = re.split(r". ", i)
    return result

Но предложение не было разделено.

Есть идеи, пожалуйста?

Спасибо

Ответы [ 3 ]

4 голосов
/ 15 мая 2019

Используя простую итерацию и str.split

Пример:

data = ['hello', 'I would like to thank you', 'I would like to thank you. By the way']

def split_pint(data):
    result = []
    for elem in data:
        result.extend(elem.split(". "))        
    return result

print(split_pint(data))

Выход:

['hello', 'I would like to thank you', 'I would like to thank you', 'By the way']
1 голос
/ 15 мая 2019

Еще один вариант, но однострочный и в функциональном программировании:

>>> from functools import reduce
>>> a = ['hello', 'I would like to thank you', 'I would like to thank you. By the way']
>>> reduce(lambda i, j: i + j, map(lambda s: s.split('. '), a))
['hello', 'I would like to thank you', 'I would like to thank you', 'By the way']

Во-первых, map создает список из каждой строки, а во-вторых, reduce просто объединяет все списки.

1 голос
/ 15 мая 2019

Это не способ изменить список, как вы можете видеть:

l = [0, 0]
for x in l:
    x = 1
print(l)
# [0, 0]

В любом случае, если вы хотите использовать re.split, вам нужно будет экранировать . символ:

import re

l = ['hello', 'I would like to thank you', 'I would like to thank you. By the way']
def split_pint(result):
    res = []
    for i in result:
        res += re.split("\. ", i)
    return res


print(split_pint(l))
['hello', 'I would like to thank you', 'I would like to thank you', 'By the way']


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...