Извлечь слова из строки перед числом Python - PullRequest
0 голосов
/ 19 июня 2020

Привет всем. Мне было интересно, можно ли в python извлекать слова из строки перед числом.

Например:

Hi my name is hazza 50 test test test

Hi hazza 60 test test test

hazza 50 test test test

Я хочу получить слова перед числом, а не после, если это возможно.

Hi my name is hazza

Hi hazza

hazza

С уважением, Hazza

Ответы [ 4 ]

3 голосов
/ 19 июня 2020

Regex будет делать

import re

strings = '''
Hi my name is hazza 50 test test test

Hi hazza 60 test test test

hazza 50 test test test

hazza test test test
'''

for s in re.findall('([a-zA-Z ]*)\d*.*',strings):
    print(s)

Gives

Hi my name is hazza 

Hi hazza 

hazza 

hazza test test test
0 голосов
/ 19 июня 2020
s = "Hi my name is hazza 50 test test test"
result = ""
for i, char in enumerate(s):
    if char.isdigit():
        result = s[:i]
        break
print(result)
0 голосов
/ 19 июня 2020

Эта реализация позволит вам извлечь все наборы слов перед каждым числом в строке.

s = '50 Hi hazza 60 test test 70 test'
# Split string on spaces
split = s.split()
# Instantiate list to hold words
words = []
curr_string = ''
for string in split:
    # Check if string is numeric value
    if string.isnumeric():
        # Catch edge case where string starts with number
        if curr_string != '':
            # Add curr_string to words list -- remove trailing whitespace
            words.append(curr_string.strip())
            curr_string = ''
    else:
        # If string not numeric, add to curr_string
        curr_string += string + ' '

print(words)

Вывод: ['Hi hazza', 'test test']

0 голосов
/ 19 июня 2020
is_digit = False
str = "Hi my name is hazza 50 test test test"
r = 0

for c in str:
  if c.isdigit():
     # is_digit = True
     r = str.index(c)

print(str[0:r-2])

r - это индекс 5 r-2, потому что вы хотите, чтобы строка без этого пробела перед 50

прочитала: https://www.learnpython.org/

...