从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,然后一旦循环完成后,显示给用户