【问题标题】:How to change strings with digits and letters to integers [closed]如何将带有数字和字母的字符串更改为整数[关闭]
【发布时间】:2021-10-28 18:42:32
【问题描述】:

我从 URL 中抓取以下文本作为字符串:

1.15M 
3.75M 
1.7M 
4.19M 
1.81M 
351.65K 

“M”代表百万,“K”代表千

我正在努力获取正确的代码来将其更改为完整整数:

1150000
3750000
1700000
4190000
1810000
351650

对于所有项目,也可能有诸如1.5K23.2K25.254M之类的变体,所以我发现很难编写一个涵盖这一点的逻辑(对编码来说还是新手)。

有什么想法吗?

【问题讨论】:

标签: python string formatting integer


【解决方案1】:

你可以试试这个:

def convert_str_list(str_list, amnt_key):
    value_list = [int(float(i[:-1]) * 10 ** amnt_key[i[-1]]) for i in str_list]
    return value_list

def conver_str(amnt_str, amnt_key):
    value_list = int(float(amnt_str[:-1]) * 10 ** amnt_key[amnt_str[-1]])
    return value_list

str_list = ["1.15M", "3.75M", "1.7M", "4.19M", "1.81M", "351.65K", "150M", "360M", "2.6B", "3.7B"]
amnt_key = {'K': 3, 'M': 6, 'B': 9, 'T': 12}

print(convert_str_list(str_list=str_list, amnt_key=amnt_key))

for amnt_str in str_list:
    print(conver_str(amnt_str=amnt_str, amnt_key=amnt_key))

输出:

[1150000, 3750000, 1700000, 4190000, 1810000, 351650, 150000000, 360000000, 2600000000, 3700000000]
1150000
3750000
1700000
4190000
1810000
351650
150000000
360000000
2600000000
3700000000

【讨论】:

  • 我认为你最后不需要除以 1000,否则答案很好(几乎是我的想法,但你更快:))
  • 是的,你是对的。那是一种误解。我将金额转换为 K
【解决方案2】:

试试这个:

n = "356.6M"
if "K" in n:
    n2 = n.replace("K", "")
    full_int = float(n2) * 1000
elif "M" in n:
    n2 = n.replace("M", "")
    full_int = float(n2) * 1000000
print(int(full_int))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 2019-12-01
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多