Разделить список на несколько разделителей - PullRequest
2 голосов
/ 11 марта 2019

Если у меня есть такое предложение:

text = "The sun shine brightly, but is very cold today!"

Я могу использовать сплит:

newArray = text.split(" ")
print (newArray)   

Конец результата будет:

['The', 'sun', 'shine', 'brightly,', 'but', 'is', 'very', 'cold', 'today!']

Но, если мне нужно разделить не только «Пробел», но, например, «Пробел», «Запятая» и «Ввод».

Как я могу это сделать?

Чтобы быть более понятным, вот мой пример кода:

import io
from pdfminer.converter import TextConverter
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfpage import PDFPage
import re

def extract_text_from_pdf(pdf_path):
    resource_manager = PDFResourceManager()
    fake_file_handle = io.StringIO()
    converter = TextConverter(resource_manager, fake_file_handle)
    page_interpreter = PDFPageInterpreter(resource_manager, converter)
    with open(pdf_path, 'rb') as fh:
        for page in PDFPage.get_pages(fh, 
                                      caching=True,
                                      check_extractable=True):
            page_interpreter.process_page(page)
        text = fake_file_handle.getvalue()
    # close open handles
    converter.close()
    fake_file_handle.close()
    if text:
        return text


text = extract_text_from_pdf('file.pdf')
newArray = text.split(" ")
print (newArray)   

Ответы [ 3 ]

3 голосов
/ 11 марта 2019

Самым простым подходом, вероятно, будет нормализация ваших данных и замена всех «запятых» и «ввода» пробелом, а затем разделение, как вы делали ранее, или использование split() из re с \s мета.

3 голосов
/ 11 марта 2019

Вы можете использовать re.split для разделения по нескольким критериям:

text = "The sun shine brightly, but is very cold today!"

Скажем, вы хотите разделить пробелами и запятыми:

import re
re.split( r'\s+|,\s*', text)
# ['The', 'sun', 'shine', 'brightly', 'but', 'is', 'very', 'cold', 'today!']
2 голосов
/ 11 марта 2019

Метод str.split () разбивает пробел и преобразует в массив:

>>> import re
>>> s = "The sun shine brightly, but is very cold today!"
>>> re.findall( r'\s+|,\s*', s)
['The', 'sun', 'shine', 'brightly', 'but', 'is', 'very', 'cold', 'today!']

надеюсь, что вы, ребята, используете это.

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