从string中删除数字

我怎样才能从string中删除数字?

这会适合你的情况吗?

 >>> s = '12abcd405' >>> result = ''.join([i for i in s if not i.isdigit()]) >>> result 'abcd' 

这使用了一个列表理解,这里发生的事情与这个结构类似:

 no_digits = [] # Iterate through the string, adding non-numbers to the no_digits list for i in s: if not i.isdigit(): no_digits.append(i) # Now join all elements of the list with '', # which puts all of the characters together. result = ''.join(no_digits) 

正如@AshwiniChaudhary和@KirkStrauser所指出的那样,实际上你不需要在一行内使用括号,使得括号内的部分成为生成器expression式(比列表理解更有效)。 即使这不符合你的任务的要求,这是你最终应该读的:):

 >>> s = '12abcd405' >>> result = ''.join(i for i in s if not i.isdigit()) >>> result 'abcd' 

而且,只是把它扔在混合中,是经常遗忘的str.translate将比循环/正则expression式快得多:

对于Python 2:

 from string import digits s = 'abc123def456ghi789zero0' res = s.translate(None, digits) # 'abcdefghizero' 

对于Python 3:

 from string import digits s = 'abc123def456ghi789zero0' remove_digits = str.maketrans('', '', digits) res = s.translate(remove_digits) # 'abcdefghizero' 

不知道你的老师是否允许你使用filter,但…

 filter(lambda x: x.isalpha(), "a1a2a3s3d4f5fg6h") 

returns-

 'aaasdffgh' 

比循环更有效率…

例:

 for i in range(10): a.replace(str(i),'') 

那这个呢:

 out_string = filter(lambda c: not c.isdigit(), in_string) 

只有less数(其他人build议其中的一些)

方法1:

 ''.join(i for i in myStr if not i.isdigit()) 

方法2:

 def removeDigits(s): answer = [] for char in s: if not char.isdigit(): answer.append(char) return ''.join(char) 

方法3:

 ''.join(filter(lambda x: not x.isdigit(), mystr)) 

方法4:

 nums = set(map(int, range(10))) ''.join(i for i in mystr if i not in nums) 

方法5:

 ''.join(i for i in mystr if ord(i) not in range(48, 58)) 

说st是你未格式化的string,然后运行

 st_nodigits=''.join(i for i in st if i.isalpha()) 

正如刚才提到的。 但我猜你需要一些非常简单的东西,所以说s是你的string, st_res是一个没有数字的string,那么这里是你的代码

 l = ['0','1','2','3','4','5','6','7','8','9'] st_res="" for ch in s: if ch not in l: st_res+=ch 

我很乐意使用正则expression式来实现这一点,但由于您只能使用列表,循环,函数等。

这是我想到的:

 stringWithNumbers="I have 10 bananas for my 5 monkeys!" stringWithoutNumbers=''.join(c if c not in map(str,range(0,10)) else "" for c in stringWithNumbers) print(stringWithoutNumbers) #I have bananas for my monkeys! 

如果我理解你的问题的权利,一种方法是打破string中的字符,然后检查每个string使用循环,无论是一个string或数字,然后如果string保存在一个variables,然后一旦循环完成后,显示给用户