Как извлечь слова в строку Python - PullRequest
0 голосов
/ 18 октября 2019

У меня есть много строк, которые выглядят следующим образом:

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']

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Предположим, у вас есть строка myString. Вот как вы можете достичь своей цели:

myString = """Einwohnerzahl

244.951

StudierendeamHochschulort"""


results  = [i.strip() for i in myString.split("\n") if i != '']

print(results)

Вывод

['Einwohnerzahl', '244.951', 'StudierendeamHochschulort']
1 голос
/ 18 октября 2019

Используйте это:

s = 'apple\nbanana' #any phrase that you like
print(s.split('\n'))

Вывод:

['apple', 'banana']

Если вы хотите использовать его как отдельные слова / фразы:

s = 'apple\nbanana' 
for i in s.split('\n'):
    print(i)

Вывод:

apple
banana
...