简体   繁体   English

将列表中的字符串转换为float

[英]convert strings in list to float

this issue is driving me nuts. 这个问题使我发疯。 I have a scrapped data from a website and put those data into a dictionary. 我有一个网站的报废数据,然后将这些数据放入字典中。 As a result I have a couple of lists and one of those lists looks like this: 结果,我有几个列表,其中一个列表如下所示:

    'In': ['7,051,156,075,145', '878,009,569,197', '427,386,441,994', '278,189,230,134', '230,599,954,634', '197,088,252,840', '101,610,549,933', '78,426,830,219', '80,925,933,532', '58,451,193,176', '55,701,282,247', '49,748,756,546', '48,642,591,960', '45,686,162,172', '44,227,235,911', '40,467,951,256', '16,392,881,465', '5,988,546,624', '41,810,356,569', '23,515,110,330', '35,815,116,718', '10,968,016,226', '518,858,345', '29,947,210,177', '29,030,975,280', '28,803,225,552', '373,570,428', '27,527,784,709', '373,964,822', '514,671,410', '25,875,702,735', '416,462,736', '24,423,209,779', '24,332,893,924', '22,491,450,198', '22,894,037,015', '23,026,866,310', '6,148,324,700', '22,226,875,309', '21,127,010,221', '375,662,568', '18,845,330,059', '238,084,409', '18,338,638,037', '6,469,472,952', '16,988,637,757', '234,705,103', '16,164,528,769', '236,542,082', '15,878,894,181', '15,892,415,892', '384,601,333', '173,719,914', '14,374,301,195', '13,789,745,661', '13,333,600,469', '12,935,822,692', '1,414,494,923', '13,000,908,688', '2,875,324,761', '280,912,611', '12,443,874,812', '12,470,333,848', '188,668,181', '12,092,658,438', '676,583,644', '11,997,025,285', '11,677,854,811', '220,087,430', '11,251,777,539', '11,442,705,899', '8,628,429,553', '190,648,851', '11,187,421,523', '3,684,540,569', '10,670,576,444', '10,740,578,885', '10,582,331,778', '10,557,152,315', '9,804,556,177', '10,325,762,681', '10,193,777,314', '10,241,020,644', '10,218,671,348', '5,565,872,689', '6,066,496,977', '128,971,640', '160,853,134', '3,061,365,095', '8,849,393,167', '182,484,904', '161,406,328', '9,335,264,956', '158,941,175', '8,893,005,099', '132,642,660', '147,492,645', '133,898,533', '8,565,414,335', '8,543,285,361', '1,081,514,186', '8,010,900,010', '344,032,888', '7,851,320,645', '119,252,217', '7,708,770,926', '3,831,828,937', '266,060,360', '7,469,255,927', '2,553,584,433', '7,404,456,294', '1,775,993,183', '7,338,693,939', '7,337,702,662', '7,246,023,792', '3,147,875,441', '142,555,296', '1,953,694,528', '3,918,267,288', '1,324,557,844', '5,683,622,890', '6,927,422,982', '106,687,337', '6,912,850,849', '2,845,801,508', '6,818,774,192', '6,853,915,064', '147,347,763', '344,146,667', '6,711,901,497', '6,570,349,311', '6,519,300,790', '135,371,330', '6,472,184,188', '84,726,075', '6,224,918,718', '5,795,088,428', '5,348,330,674', '76,438,957', '6,156,100,475', '6,046,328,039', '1,572,859,369', '5,966,535,367', '5,960,854,825', '5,844,987,758', '99,526,367', '3,320,692,742', '5,763,785,447', '332,891,989', '5,673,010,795', '2,120,698,374', '5,600,425,762', '3,406,789,774']

The values have been stored as strings which I think could be directly converted to floats but I dont know how. 这些值已存储为字符串,我认为可以直接将其转换为浮点数,但我不知道如何。 Nevermind, I thought I could just convert those values into floats and work with them further. 没关系,我想我可以将这些值转换为浮点数,然后与它们进一步合作。 However I cant get it to work. 但是我无法使其正常工作。 I assigned the list to the variable "bob" and tried the following code to convert to float: 我将列表分配给变量“ bob”,并尝试将以下代码转换为float:

empty = []
der = np.array(empty, dtype = np.float32)
der = np.append(der, bob)

When i try 当我尝试

print(der/2)

it gives me this: "TypeError: ufunc 'true_divide' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''" 它给了我这个:“ TypeError:输入类型不支持ufunc'true_divide',并且根据转换规则“ safe”,不能将输入安全地强制转换为任何受支持的类型”

whats going on here? 这里发生了什么? Where is my mistake? 我的错误在哪里?

I appreciate any help! 感谢您的帮助! Thanks 谢谢

you can use map and lambda to remove comma and convert the list of string floats to list of floats 您可以使用map和lambda删除逗号并将字符串浮点数列表转换为浮点数列表

result = list(map(lambda x: float(x.replace(",", "")), list_of_string_floats))

for integers it would be 对于整数,它将是

result = list(map(lambda x: int(x.replace(",", "")), list_of_string_ints))

There is no need to use numpy 无需使用numpy

You first have to get rid of the ",". 您首先必须摆脱“,”。

s = '7,051,156,075,145'
f = float(s.replace(',',''))

After this, f is the float value of the given string. 此后, f是给定字符串的浮点值。

For the whole thing, you can do this: 对于整个事情,您可以执行以下操作:

float_list = [float(s.replace(',','')) for s in string_list]

如果L是您的原始列表,则可读性最高:

[[float(x) for x in s.split(',')] for s in L ]  

check if that works 检查是否有效

print map(lambda x: float("".join(x.split(","))), a)

https://repl.it/H6ZL https://repl.it/H6ZL

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM