#python #list
#python #Список
Вопрос:
Если у меня есть такое предложение:
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)
Ответ №1:
Вы могли бы использовать 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!']
Комментарии:
1. Опереди меня в этом,,
2. Вам действительно следует использовать необработанную строку для вашего регулярного выражения
r's |,s*'
иначе могут произойти странные вещи.3. Или наоборот, используя
re.find
4. Tks… Могу ли я поместить здесь свой код, чтобы люди видели, почему я это спросил?
5. Если вы знаете, где это сделать, вы всегда можете обновить вопрос и добавить код, который вы пробовали, или еще некоторые подробности @DaviAmaral
Ответ №2:
Вероятно, самым простым подходом было бы нормализовать ваши данные и заменить все «запятые» и «ввод» пробелом, затем разделить, как вы делали раньше, или использовать split()
from re
с s
помощью meta.
Комментарии:
1. Чувак, я чувствую себя таким глупым сейчас! Идеально! Так просто, и я не думал, что!
Ответ №3:
Метод 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!']
надеюсь, вы, ребята, используете это.
Комментарии:
1. Мне нравится подход с
re.findall
, но имеет ли это отношение к приведенному выше предложению? Вероятно, отсутствует что-то вроде «Вместо этого вы могли бы попробовать …»