Python 剥去所有东西,直到达到任何数字(0-9)?

Python 剥去所有东西,直到达到任何数字(0-9)?,python,string,replace,Python,String,Replace,我怎样才能把所有导致数字的东西都去掉?当然,这必须适用于任何数字,而不仅仅是1 我想输入blahblahblah 1 main street。和1 main street作为输出。您可以使用。在到达'1'(或任何其他数字)之前删除所有内容: from itertools import dropwhile s = 'blahblahblah 1 main street' r = ''.join(dropwhile(lambda x: not x.isdigit(), s)) print(r)

我怎样才能把所有导致数字的东西都去掉?当然,这必须适用于任何数字,而不仅仅是1

我想输入
blahblahblah 1 main street
。和
1 main street
作为输出。

您可以使用。在到达
'1'
(或任何其他数字)之前删除所有内容:

from itertools import dropwhile

s = 'blahblahblah 1 main street'
r = ''.join(dropwhile(lambda x: not x.isdigit(), s))

print(r)
# '1 main street'

适用于所有数字

您可以使用
re
模块的
sub
功能替换左侧的所有非数字字符

import re

s = 'blahblahblah 1 main street'
re.sub(re.compile(r'^[^0-9]*'), '', s)

#Outputs '1 main street'

这里有一个更简单的解决方案:

s = "blahblahblah 1 main street"

i = 0
for char in s:
   if char.isdigit():
      s = s[i:]
      break
   i += 1

print(s)

只需将原始字符串从遇到数字的那一点切到字符串的末尾。

只需简单使用ASCII代码即可。0的ASCII值为48,9的ASCII值为57。所以你可以这样做:

str = raw_input("Enter a string:")
print(str)
stripstr = ""
flag = 0
for i in range(0, len(str)):
    if flag == 1:
        stripstr += str[i]
    elif ord(str[i]) >= 48 and ord(str[i]) <= 57:
        flag = 1
print(stripstr)
str=raw\u输入(“输入字符串:”)
打印(str)
stripstr=“”
标志=0
对于范围(0,len(str))中的i:
如果标志==1:
stripstr+=str[i]

elif ord(str[i])>=48和ord(str[i])。
blahblahblah 1大街2第二大道的期望输出是什么?
1大街2第二大道
。我同意在第一个数字出现时进行拆分,如果字符串是
文本,这里是5次方
,这行吗?我认为OP希望在任何num处动态停止,而这可能解决指定的情况,但是,它没有处理任何数值dynamically@MosesKoledoyelambda中的
t
变量来自哪里?@m_callens您至少应该知道这是一个输入错误:PWorked!6分钟后我可以接受这个答案!非常感谢你!我不知道为什么我没有想到这个:0@hleggs很乐意帮忙!谢谢你,我很感激你的回答,但是我已经导入了
re
用于其他用途:)这只复制数字字符,如果你找到一个数字就停止循环,复制子字符串的其余部分,恐怕你错了。当它到达第一个数字后,flag被设置为1,所有跟随它的字符都被添加到stripstr。是的,你是对的。我没有注意到国旗保持了它的价值。仍然会对每个字符执行循环,并对两个条件进行计算。还是一个非常低效的解决方案,你不觉得吗?我可以用一个elif语句来改变这一点。但我确实看到了ItoA如何更有效地使用s[I:]。