Как разобрать таблицы с простым текстом? (несколько строк)

onSaveInstance будет вызываться, если пользователь поворачивает экран, чтобы он мог загружать ресурсы, связанные с новой ориентацией.

Возможно, этот пользователь повернул экран, а затем нажал кнопку «Назад» (потому что это также возможно, что этот пользователь вошел в свой телефон при использовании вашего приложения)

2
задан McClain Thiel 28 February 2019 в 10:04
поделиться

1 ответ

Вы можете анализировать таблицу с помощью регулярных выражений. Из этого документа я сделал следующие наблюдения:

  1. Я вижу, что у вас есть разделитель для курсов: --------------------------------------------------------------------------------
  2. Затем, между этим разделителем, у вас есть левая рука и правая рука, разделенные трубами |.
  3. Кроме того, у вас есть номер справа в круглых скобках, когда цитируется модуль (например, (1)).

Часть 1 вы можете легко реализовать, часть 2 и 3 могут быть частично решены с помощью регулярных выражений.
Здесь я приведу самую сложную часть решения, вы можете легко реализовать все остальное и, возможно, поместить в фрейм данных pandas.

import re
# separate left hand and right hand 
strline = "course name |MATH 123 divide by 0 (1)"
left, right = re.split('\|',strline)  # split around the pipe
# find the parenthesis marker on the right
m = re.search(r'\(\d+\)',right)
has_module_name = m is not None

if has_module_name:
   # catch the module name, description and exclude number in parenthesis
   m_mod = re.match(r'([a-zA-Z0-9]+ [a-zA-Z0-9]+)([^\(\)]+).*',right)

   if m_mod is not None:
      mod_code = m_mod.group(1)
      mod_desc = m_mod.group(2)
      print("module name: {}".format(mod_code))
      print("module first line desc: {}".format(mod_desc))

# todo: make loops to catch other lines of desc, remove duplicate whitespaces

Возвращает:

module name: MATH 123
module first line desc:  divide by 0
0
ответ дан Lokinou 28 February 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: