У меня есть много строк, которые выглядят следующим образом:
Einwohnerzahl
244.951
StudierendeamHochschulort
[...]
Слова теперь разделены "\ n". Как я могу разделить целые слова и цифры в отдельных списках? Поскольку у меня есть много этих строк, которые не совсем одинаковы, я ищу решение, которое может обрабатывать варианты, такие как различные позиции слов / цифр или пропущенных слов / цифр в строке.
Окончательное решение:
На первом шаге я использую
cleaned_string = re.sub('['+string.punctuation+']', '', cleanstring).split()
, который генерирует следующий вывод:
print(cleaned_string)
['Einwohnerzahl', '244951', 'StudierendeamHochschulort', '57573', 'Studierendenanteil']
После этого я использую
_re_digits = re.compile(r"(-?(?:(?:\d+(?:\.\d*)?)|(?:\.\d+)))")
pure_zahlen = []
for element in cleaned_string:
pure_zahlen += [ float(n) for n in _re_digits.findall(element)]
и
pure_text = [x for x in cleaned_string if not (x.isdigit() or x[0] == '-' and x[1:].isdigit())]
для разделения текста и чисел из списка cleaned_string.
Это дает мне
print(pure_zahlen)
[41532.0, 2902.0, 70.0, 3739.0, 151319.0]
и
print(pure_text)
['Einwohnerzahl', 'StudierendeamHochschulort', 'Studierendenanteil']