Напишите регулярное выражение для извлечения числа перед '/' - PullRequest
0 голосов
/ 28 марта 2019

Я не хочу использовать разделение строк, потому что у меня есть номера 1-99 и столбец строки, который содержит «# / #» где-то в тексте.

Как написать регулярное выражение для извлечения числа 10 в следующем примере:

He got 10/19 questions right.

Ответы [ 5 ]

1 голос
/ 28 марта 2019

Вы все еще можете использовать str.split(), если вы тщательно строите логику вокруг него:

t = "He got 10/19 questions right."
t2 = "He/she got 10/19 questions right"


for q in [t,t2]:


    # split whole string at spaces
    # split each part at / 
    # only keep parts that contain / but not at 1st position and only consists
    # out of numbers elsewise
    numbers = [x.split("/") for x in q.split() 
               if "/" in x and all(c in "0123456789/" for c in x)
              and not x.startswith("/")]
    if numbers:
        print(numbers[0][0])

Вывод:

10
10
1 голос
/ 28 марта 2019

Используйте заголовок для сопоставления с /, например:

\d+(?=/)

Вам может потребоваться экранировать /, если ваша реализация использует его в качестве разделителя.

Живой пример: https://regex101.com/r/xdT4vq/1

0 голосов
/ 28 марта 2019

Найти все числа перед косой чертой и исключить косую черту с помощью скобок start-stop.

>>> import re
>>> myString = 'He got 10/19 questions right.'
>>> stringNumber = re.findall('([0-9]+)/', myString)
>>> stringNumber
['10']

Возвращает все числа, оканчивающиеся косой чертой, но в списке строк,если вы хотите целые числа, вы должны map свой список с int, а затем сделать list снова.

>>> intNumber = list(map(int, stringNumber))
>>> intNumber
[10]
0 голосов
/ 28 марта 2019
import re
myString = "He got 10/19 questions right."
oldnumber = re.findall('[0-9]+/', myString)  #find one or more digits followed by a slash.
newNumber = oldnumber[0].replace("/","")  #get rid of the slash.

print(newNumber)
>>>10
0 голосов
/ 28 марта 2019
res = re.search('(\d+)/\d+', r'He got 10/19 questions right.')
res.groups()
('10',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...