Попробуйте PDFMiner. Это может извлечь текст из файлов PDF как HTML, SGML или "Теговый PDF" формат.
Теговый формат PDF, кажется, является самым чистым, и снятие XML-тэгов оставляет просто пустой текст.
А версия Python 3 доступна под:
Вот не очень красивый способ сделать это. Результатом является генератор, но если вам действительно нужен список, вы можете окружить его вызовом list ()
. По большей части это не имеет значения.
Предикат - это функция, которая определяет для каждой пары ключ / значение, будет ли словарь в списке сокращать ее. По умолчанию принимает все. Если ни одна пара k / v в словаре не соответствует, она отклоняется.
def filter_data(data, predicate=lambda k, v: True):
for d in data:
for k, v in d.items():
if predicate(k, v):
yield d
test_data = [{"key1":"value1", "key2":"value2"}, {"key1":"blabla"}, {"key1":"value1", "eh":"uh"}]
list(filter_data(test_data, lambda k, v: k == "key1" and v == "value1"))
# [{'key2': 'value2', 'key1': 'value1'}, {'key1': 'value1', 'eh': 'uh'}]
За исключением проблем, уже отмеченных в других комментариях и ответах (несколько одинаковых ключей не могут быть в dict и т. Д.), Вот как я бы это сделал:
def select_sublist(list_of_dicts, **kwargs):
return [d for d in list_of_dicts
if all(d.get(k)==kwargs[k] for k in kwargs)]
subdata = select_sublist(data, key1='value1')
Ответ слишком прост, поэтому я думаю, что нам не хватает некоторой информации. В любом случае:
result = []
for datadict in data:
for key, value in datadict.items():
thefiltering()
if datadict.get('matchkey') == 'matchvalue':
result.append(datadict)
Кроме того, ваш «главный словарь» - это не словарь, а список.