在Python中将千位分隔符的字符串转换为整数

时间:2013-09-07 20:52:06

标签: python

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

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

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

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

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

字符串类是否有方法可以执行我想要的操作?

4 个答案:

答案 0 :(得分:5)

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

print dir("")

顺便说一句,您也可以用Java编写:

new Integer("2.3")

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

答案 1 :(得分:3)

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

  

应该有一个 - 最好只有一个 - 显而易见的方法。

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

my_integer = int(my_string)

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

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

答案 2 :(得分:2)

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

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()

答案 3 :(得分: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(',', ''))