Python 将包含非整数字符的字符串转换为整数的简单方法

Python 将包含非整数字符的字符串转换为整数的简单方法,python,Python,有没有什么简单的方法可以像你一样转动琴弦 251.13M 201.41B 变成一个整数 或者是找到“.”和“M”的索引并做一些子字符串的僵化方法(我能想到的唯一方法)如果它们都是精确的格式,这应该会起作用,因为它会删除结尾的字母,将其转换为浮点数,然后再转换为整数,从而截断小数 int(float(str1[:-1])) 如果它们都是精确的格式,那么这应该是可行的,因为它会删除结尾的字母,将其转换为浮点数,然后再转换为int,这将截断小数 int(float(str1[:-1])) 我很确

有没有什么简单的方法可以像你一样转动琴弦

251.13M
201.41B
变成一个整数


或者是找到“.”和“M”的索引并做一些子字符串的僵化方法(我能想到的唯一方法)如果它们都是精确的格式,这应该会起作用,因为它会删除结尾的字母,将其转换为浮点数,然后再转换为整数,从而截断小数

int(float(str1[:-1]))

如果它们都是精确的格式,那么这应该是可行的,因为它会删除结尾的字母,将其转换为浮点数,然后再转换为int,这将截断小数

int(float(str1[:-1]))

我很确定没有直接的方法(即单个函数调用)可以得到答案。但您可以使用下面这样的简单代码

valD = {"M" : 6, "B" : 9}

def getNumber(nstring):
    if nstring[-1] in valD:
        return int(float(nstring[:-1]) * 10**valD[nstring[-1]])
    else:
        return int(nstring)

我很确定没有直接的方法(即单个函数调用)可以得到答案。但您可以使用下面这样的简单代码

valD = {"M" : 6, "B" : 9}

def getNumber(nstring):
    if nstring[-1] in valD:
        return int(float(nstring[:-1]) * 10**valD[nstring[-1]])
    else:
        return int(nstring)

如果你想保留面额,你可以使用字典将最后一个字母映射到数千、数百万、数十亿等等

denominations = {
  'K': 1000,
  'M': 1000000,
  'B': 1000000000
}
然后可以检查最后一个字符是否是面额,因为它可能是可选的

head = str1[:-1] # everything except the last character
tail = str1[-1]  # only the last character

# if the tail is one of the denominations, multiple the value
if tail in denominations:
    value = int(float(head)) * denominations[tail]
else:
    value = int(float(str1))

注意:这可以进一步优化,但我已经写了很长的一段文字来说明发生了什么。

如果你想保留面额,可以使用字典将最后一个字母映射到数千、数百万、数十亿等

denominations = {
  'K': 1000,
  'M': 1000000,
  'B': 1000000000
}
然后可以检查最后一个字符是否是面额,因为它可能是可选的

head = str1[:-1] # everything except the last character
tail = str1[-1]  # only the last character

# if the tail is one of the denominations, multiple the value
if tail in denominations:
    value = int(float(head)) * denominations[tail]
else:
    value = int(float(str1))

注意:这可以进一步优化,但我已经写了很长一段时间,以明确发生了什么。

您是否尝试编写自己的程序来完成此操作?我正在进行中。但它变得非常乏味。也许是因为我没有那么熟练。所以我想知道是否有一个简单的方法。你想要整数还是浮点?我想那些是字节?MB和B?或者数以百万计和数十亿计?你可能会调整这个来做,你能给出一些预期产出的例子吗。目前还不清楚
M
B
是否对结果有任何影响。您是否尝试编写自己的程序来实现这一点?我正在进行中。但它变得非常乏味。也许是因为我没有那么熟练。所以我想知道是否有一个简单的方法。你想要整数还是浮点?我想那些是字节?MB和B?或者数以百万计和数十亿计?你可能会调整这个来做,你能给出一些预期产出的例子吗。目前尚不清楚
M
B
是否对结果有任何影响,或者是否对周期有影响。只需在这段时间里施展声调。只是投下比我要做的要顺利得多的球,谢谢!这比我要做的要顺利得多,谢谢!