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
是否对结果有任何影响,或者是否对周期有影响。只需在这段时间里施展声调。只是投下比我要做的要顺利得多的球,谢谢!这比我要做的要顺利得多,谢谢!