У меня есть эти строки:
"I have been working - 8h by day"
"Like - 9H by Month"
Я пытаюсь узнать количество часов. В основном я пытаюсь получить такой вывод:
8
9
Я пробую это, но безуспешно:
print(myString.split("H",1)[1] )
Но я получаю следующее:
builtins.IndexError: list index out of range
Как я могу получить строку после «-» и перед «H» в Python?
Спасибо!






Использовать регулярное выражение
Бывший:
import re
s = ["I have been working - 8h by day", "Like - 9H by Month"]
for i in s:
print(re.findall("\d+H" ,i, flags=re.I))
Выход:
['8']
['9']
Вы можете использовать re.findall для сопоставления всех цифр, только если за ними следует h или H:
import re
s = ["I have been working - 8h by day", "Like - 9H by Month"]
new_s = [re.findall('\d+(?=H)', i, flags=re.I)[0] for i in s]
Выход:
['8', '9']
проблема в том, что в "I have been working - 8h by day" нет "H", поэтому при разделении на «H» в списке будет только один элемент.
вы можете найти его с помощью регулярного выражения
import re
pattern = r'\d(?=[h|H])'
data = ["I have been working - 8h by day",
"Like - 9H by Month"]
for item in data:
print re.findall(pattern, item)
В этом есть опасность, что он будет разделен на другие H и сохранит всю строку (чтобы решить эту проблему, напишите лучшее выражение с регулярным выражением).
чтобы разрешить ваш код как есть:
print(myString.split("H",1)[0][::-1][0])