Ответ 1
Встроенный str.partition()
метод сделает это за вас. В отличие от str.split()
, он не потрудится вырезать остальную часть str
в разные str
s.
text = raw_input("Type something:")
left_text = text.partition("!")[0]
Мне нужна помощь в попытке написать определенную часть программы. Идея состоит в том, что человек будет вводить кучу тарабарщины, и программа прочтет ее до тех пор, пока она не достигнет "!". (восклицательный знак), например:
input("Type something: ")
Типы лиц: wolfdo65gtornado! salmontiger223
Если я попрошу программу распечатать ввод, он должен печатать только wolfdo65gtornado
и вырезать что-либо, как только он достигнет значения!! Остальная часть программы анализирует и подсчитывает буквы, но эта часть я уже знаю, как это сделать. Мне просто нужна помощь с первой частью. Я пытался просмотреть книгу, но кажется, что я что-то упустил.
Я думаю, возможно, используя цикл for
, а затем устанавливая ограничение на него, но я не могу понять, как сделать случайный ввод вмененного ввода строки анализируемым для определенного символа, а затем избавиться от остальных.
Если бы вы могли помочь, я действительно по достоинству оценил бы это. Спасибо!
Встроенный str.partition()
метод сделает это за вас. В отличие от str.split()
, он не потрудится вырезать остальную часть str
в разные str
s.
text = raw_input("Type something:")
left_text = text.partition("!")[0]
>>> s = "wolfdo65gtornado!salmontiger223"
>>> s.split('!')[0]
'wolfdo65gtornado'
>>> s = "wolfdo65gtornadosalmontiger223"
>>> s.split('!')[0]
'wolfdo65gtornadosalmontiger223'
если он не встречает символ "!", он просто захватит весь текст. если вы хотите вывести ошибку, если она не соответствует "!", вы можете просто сделать следующее:
s = "something!something"
if "!" in s:
print "there is a '!' character in the context"
else:
print "blah, you aren't using it right :("
Вы хотите itertools.takewhile()
.
>>> s = "wolfdo65gtornado!salmontiger223"
>>> '-'.join(itertools.takewhile(lambda x: x != '!', s))
'w-o-l-f-d-o-6-5-g-t-o-r-n-a-d-o'
>>> s = "wolfdo65gtornado!salmontiger223!cvhegjkh54bgve8r7tg"
>>> i = iter(s)
>>> '-'.join(itertools.takewhile(lambda x: x != '!', i))
'w-o-l-f-d-o-6-5-g-t-o-r-n-a-d-o'
>>> '-'.join(itertools.takewhile(lambda x: x != '!', i))
's-a-l-m-o-n-t-i-g-e-r-2-2-3'
>>> '-'.join(itertools.takewhile(lambda x: x != '!', i))
'c-v-h-e-g-j-k-h-5-4-b-g-v-e-8-r-7-t-g'
Попробуйте следующее:
s = "wolfdo65gtornado!salmontiger223"
m = s.index('!')
l = s[:m]
Объяснить принятый ответ.
расщепляющий
Функция partition()
разбивает строку в списке на 3 элемента:
mystring = "123splitABC"
x = mystring.partition("split")
print(x)
дам:
('123', 'split', 'ABC')
Доступ к ним как элементы списка:
print (x[0])
==> 123
print (x[1])
==> split
print (x[2])
==> ABC
Мы можем использовать itertools
s = "wolfdo65gtornado!salmontiger223"
result = "".join(itertools.takewhile(lambda x : x!='!' , s))
>>"wolfdo65gtornado"