将带有千位分隔符的字符串转换为整数?

问题描述 投票:1回答:4

我有一个包含要删除的某些字符的字符串。

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

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

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

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

字符串类有执行我想要的方法吗?

python
4个回答
5
投票

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

print dir("")

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

new Integer("2.3")

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


3
投票

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

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

要将字符串转换为整数,请始终这样做:

my_integer = int(my_string)

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

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


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

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(',', ''))
© www.soinside.com 2019 - 2024. All rights reserved.