Если у меня есть строка, давайте просто скажем, b a hello b Hi, как я могу разделить строку на все b ПОСЛЕ первого вхождения буквы a?

Например, он вернул бы ["b a hello", "Hi"].

3
Person 24 Фев 2018 в 08:51

7 ответов

Лучший ответ

Это задокументировано здесь: str.rsplit ()

sentence = 'b a hello b Hi'
sentence.rsplit('b', 1)
5
Rambarun Komaljeet 24 Фев 2018 в 06:06
str = "b a hello b Hi"
res = str[str.find("a"):].split("b")
res[0] = str[:str.find("a")] + res[0]
print res  
# ['b a hello ', ' Hi']
0
陈敏华 24 Фев 2018 в 06:04

В вашем примере результата вы разбили строку на 'b', так что я собираюсь использовать это.

a = "b a hello b Hi"
index = a.index('a') + a[a.index('a'):].index(' b ') # That's the index of first ' b '.

# Since split will give 1 empty element at the beginning I exclude that.
result = [a[:index]] + a[index:].split(' b ')[1:] 
# ['b a hello', 'Hi']

Если вы хотите разделить на 'b', замените их.

0
Emre Külah 24 Фев 2018 в 06:14

Если вы заметили расположение ворот (сначала «а»), то вы можете разбить строку после этой точки следующим образом:

Код:

a_string = 'b a hello b Hi'

first_a = a_string.index('a')
a_split = a_string[first_a:].split('b')
a_split[0] = a_string[:first_a] + a_split[0]
a_split = [x.strip() for x in a_split]

print(a_split)

Результат:

['b a hello', 'Hi']
2
Stephen Rauch 24 Фев 2018 в 06:02

Попробуйте это: -

a = "b a hello b Hi"
x = [x for x,y in enumerate(a) if y=='b']
ls = [a[x[0]:x[-1]],a[x[-1]+1:].strip()]
print(ls)
0
Narendra 24 Фев 2018 в 06:09
str = 'b a hello b Hi'
print(str[str.index('a'):].split('b'))
0
Jay Shankar Gupta 24 Фев 2018 в 06:04

Используйте следующий код

s = 'b a hello b Hi'
i = s.index("a")
s2 = s[i+1:].strip()
l = s2.split(" b ")
print(l)
0
Pranay Pujari 24 Фев 2018 в 06:11