Как извлечь первую группу целых чисел из строки? - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно извлечь числа рядом с # из строки: ackCount. Я использую индексацию, но количество цифр рядом с ha sh может увеличиться до 5 или 6 ... и так далее. Могу ли я получить только номер сразу после # (не 1, который находится в последней строке). Ниже приведен временный код для получения 4 цифр

ackCount = "Acknowledgement of  #2352 on component \"lOrA-1\""
OAC = int(re.sub("\\D", "", ackCount)[0:4])
print(OAC)

Ответы [ 3 ]

0 голосов
/ 05 августа 2020

Если строка всегда одна и та же, вы можете использовать ackCount = ackCount.split()

Это вернет вам список, в котором каждый элемент является словом в исходной строке. По умолчанию split() использует в качестве разделителя пробелы.

Затем получите все цифры с помощью ackCount[2][1:], опять же предполагая, что это та же общая строка, но только цифры разные. Итак, проиндексируйте 2 своего списка, а затем все символы строки, начинающиеся с индекса 1 (потому что индекс 0 строки равен '#').

0 голосов
/ 05 августа 2020

Для этой цели можно использовать регулярное выражение. Убедитесь, что вы сделали правильный узор! Следующее вернет список всех совпадений:

import re
string = "he hallo #9090 8080 fdsf sfd222 f222"
find = re.findall("(?<=#)[0-9]+\\b", string)
print(find)

Вывод: ['9090']

Строка string = "he hallo #9090 8080 fdsf sfd222 f222 #888" вернет ['9090', '888'] et c.

0 голосов
/ 05 августа 2020
re.search(r"#(\d+)", ackCount).group(1)

Это будет искать строку ackCount на предмет первого вхождения октотора ('#'), за которым следует одна или несколько (+) цифр (\d), захватывая только di git (s) в группе захвата (.group(1)) объекта Match, возвращенного re.search().

В контексте вашего вопроса это будет:

ackCount = "Acknowledgement of  #2352 on component \"lOrA-1\""
try:
    OAC = int(re.search(r"#(\d+)", ackCount).group(1))
    print(OAC)
# error handling if the cast to `int` fails, or there is no returned match
except ValueError, AttributeError:
    print("No match found.")
>>> 2352
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...