如何从字符串中删除字符?

2024-09-30 02:25:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,在没有学习python2的情况下开始学习python3。我尝试应用string.translate()函数,我了解到python3不支持该函数。在

from string import maketrans


intab = "0123456789"
outtab = ""
trantab = maketrans(intab, outtab)
str = "p1y2t3h4o5n6"
print(str.translate(trantab))

运行它会出现以下错误:

^{pr2}$

我打算将输出作为python。我怎么能做到呢?在


Tags: 函数fromimportstring情况python3translate初学者
3条回答

请改用^{}静态方法(请注意,您不需要导入它)。在

问题的答案

不要对字符串变量使用名称str。它将屏蔽内置的str

intab = "0123456789"
outtab = intab[::-1]
trantab = str.maketrans(intab, outtab)
mystring = "p1y2t3h4o5n6"
print(mystring.translate(trantab))

输出:

^{pr2}$

您的intab和{}的长度必须相同。Python2中string中的大多数函数在一段时间内成为了str的方法,并在Python3中将其作为string的函数删除。所以使用str.maketrans()。在

解决问题

如果要从字符串中删除字符,可以执行以下操作:

remove = set("0123456789")
mystring = "p1y2t3h4o5n6"
print(''.join(x for x in mystring if x not in remove))

输出:

python

如果要删除数字,也可以执行以下操作:

print(''.join(x for x in mystring if not x.isdigit()))

输出:

python

正如Python3.x中已经提到的,您需要使用静态方法^{}。也就是说intab和{}的长度必须相等。在

>>> str = "p1y2t3h4o5n6"
>>> intab = "0123456789"
>>> outtab = " "
>>> trantab = str.maketrans(intab, outtab * len(intab))
>>> print(mystring.translate(trantab).replace(" ", ""))
python

但您也可以使用正则表达式来实现这一点

^{pr2}$

相关问题 更多 >

    热门问题