分析字符串输入,直到它到达Python上的某个字母

anu*_*set 24 python string input edit

我试图写一个程序的某个部分需要帮助.这个想法是一个人会输入一堆乱码,程序会读到它直到达到"!" (感叹号)所以例如:

input("Type something: ")
Run Code Online (Sandbox Code Playgroud)

人种类:wolfdo65gtornado!salmontiger223

如果我要求程序打印输入,它应该只在打印wolfdo65gtornado到"!"时打印并切割任何东西.该计划的其余部分正在分析和计算字母,但那些部分我已经知道该怎么做了.我只需要第一部分的帮助.我一直在试图翻阅这本书,但似乎我错过了一些东西.

我在想,也许利用一个for循环,然后对它施加限制,但我无法弄清楚如何使随机估算的字符串输入被分析为某个特征,然后摆脱其余部分.

如果你能提供帮助,我会非常感激.谢谢!

Mic*_*man 39

内置str.partition()方法将为您完成此操作.不同于str.split()它不会费心将其余部分str切割成不同的strs.

text = raw_input("Type something:")
left_text = text.partition("!")[0]
Run Code Online (Sandbox Code Playgroud)


Ole*_*Ole 10

>>> s = "wolfdo65gtornado!salmontiger223"
>>> s.split('!')[0]
'wolfdo65gtornado'
>>> s = "wolfdo65gtornadosalmontiger223"
>>> s.split('!')[0]
'wolfdo65gtornadosalmontiger223'
Run Code Online (Sandbox Code Playgroud)

如果它没有遇到" ! "字符,它只会抓取整个文本.如果你想输出一个错误,如果它不匹配任何" ! "你可以这样做:

s = "something!something"
if "!" in s:
  print "there is a '!' character in the context"
else:
  print "blah, you aren't using it right :("
Run Code Online (Sandbox Code Playgroud)


Ign*_*ams 7

你想要的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'
Run Code Online (Sandbox Code Playgroud)


Moh*_*mad 6

尝试这个:

s = "wolfdo65gtornado!salmontiger223"
m = s.index('!')
l = s[:m]
Run Code Online (Sandbox Code Playgroud)