У меня есть проблема, которая сводит меня с ума в настоящее время.У меня есть список с несколькими миллионами записей, и мне нужно извлечь категории продуктов из них.Каждая запись выглядит следующим образом: "[['Electronics', 'Computers & Accessories', 'Cables & Accessories', 'Memory Card Adapters']]"
Проверка типа действительно дала мне строку: print(type(item))
<class 'str'>
Теперь я искал в Интернете возможное (и желательно быстрое - из-за миллиона записей) решение регулярных выражений для извлечения всех категорий.
Я нашел несколько вопросов здесь Подберите одинарные кавычки из python re : я пробовал re.findall(r"'(\w+)'", item)
, но получил только пустые скобки []
.Затем я продолжил поиск альтернативных методов, таких как этот: Python Regex, чтобы найти строку в двойных кавычках внутри строки Там кто-то пытается выполнить следующее matches=re.findall(r'\"(.+?)\"',item)
print(matches)
, но в моем случае это тоже не удалось ...
После этого я попробовал какой-то идиотский подход, чтобы найти хотя бы обходной путь и решить эту проблему позже: list_cat_split = item.split(',')
, что дает мне
e["[['Electronics'"," 'Computers & Accessories'"," 'Cables & Accessories'"," 'Memory Card Adapters']]"]
Затем я попробовал строковые методы, чтобы избавиться оти затем примените регулярное выражение:
list_categories = []
for item in list_cat_split:
item.strip('\"')
item.strip(']')
item.strip('[')
item.strip()
category = re.findall(r"'(\w+)'", item)
if category not in list_categories:
list_categories.append(category)
, однако даже этот подход не удался: [['Electronics'], []]
Я искал дальше, но не нашел правильного решения.Извините, если этот вопрос является полностью глупым, я новичок в регулярных выражениях, и, вероятно, это обычная задача для регулярных пользователей регулярных выражений?
ОБНОВЛЕНИЕ:
Почему-то я не могу ответить на свой собственный вопрос, поэтомувот обновление: спасибо за ответы - извините за неполную информацию, я очень редко спрашиваю здесь и обычно пытаюсь найти решения самостоятельно .. Я не хочу использовать базу данных, потому что это лишь малая часть моей работы по предварительной обработкедля ML-приложения, написанного полностью на Python.Также это для моего MSc проекта, поэтому нет производственной среды.Поэтому я в порядке с более медленным, но работающим решением, поскольку я делаю это раз и навсегда.Однако, насколько я вижу, решение @FailSafe сработало для меня: снимок экрана моего ноутбука jupyter здесь результат со списком
Но да, я полностью согласен с@ Wiktor Stribiżew: в производственной установке я наверняка настроил бы базу данных и позволил бы ей работать всю ночь, в любом случае, спасибо за помощь, замечательные люди здесь: -)