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)
>>> 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)
尝试这个:
s = "wolfdo65gtornado!salmontiger223"
m = s.index('!')
l = s[:m]
Run Code Online (Sandbox Code Playgroud)