1

我有一个字符串,其中包含一些我想删除的字符。

a = "2,678"
print int(a.replace(",", ""))

是否有一个字符串方法而不是函数来将该字符串更改为整数,类似于 Java 的 toXXX 方法。

我想一个接一个地添加方法,而不是将光标移回字符串的开头并将所有方法放在一起。

# I like:
a.replace(",", "")....toint()
# I don't like:
int(a.replace(",", "")...)

有没有一种方法可以让字符串类做我想做的事?

4

4 回答 4

5

Python中没有这样的东西。您可以通过以下方式列出字符串对象的所有方法和属性:

print dir("")

顺便说一句,你也可以用 Java 写这个:

new Integer("2.3")

将 Java 的内部类型 int 与 Python 的 int 对象进行比较是不公平的。在 Python 中,没有原始类型。Python 字符串、整数和浮点数都是带有方法的对象。

于 2013-09-07T20:57:39.737 回答
3

您可以派生您自己的类字符串类,其行为方式符合您的要求:

class MyStr(str):
    def __int__(self):
        return int(self.replace(",", ""))
    def to_int(self):
        return int(self)

a = MyStr("2,678")
print int(a)
print a.to_int()
于 2013-09-07T21:16:41.890 回答
3

不,这是正确的方法。Per Zen of Python

应该有一种——最好只有一种——明显的方法来做到这一点。

要将字符串转换为整数,请始终执行以下操作:

my_integer = int(my_string)

您可以创建自己的类似字符串的类型(然后像这样使用它:)my_string = MyString('2678'); my_integer = my_string.to_int(),但不要这样做。

当然,在您的特定情况下,您需要从不是整数的真正部分中清除字符串 - 但这取决于您的输入(您是否一直在考虑正则表达式,它是否更复杂?)。

于 2013-09-07T20:58:04.573 回答
0

你说你“一个接一个地附加”。我认为这意味着这些项目是更大列表的一部分......

a = '1,000'
b = '2,000'
c = '3,000'

my_list = [a, b, c]
total = 0

for item in my_list:
  item = int(item.replace(',', ''))
  total += item

print total

如果您收到需要转换为整数的输入,则只需设置一次替换。

my_input = int(raw_input('Please enter a number: ').replace(',', ''))
于 2013-09-07T21:23:29.707 回答