【问题标题】:Convert list of numeric strings into list of numbers [duplicate]将数字字符串列表转换为数字列表[重复]
【发布时间】:2018-10-12 02:51:58
【问题描述】:

我有一个巨大的 txt 文件,其中包含以下值(前 5 个):

$42,198.98  
$1,305.04  
$1,821.91  
$105,747.79  
$100,931.55

如何将此字符串列表转换为数字列表(意味着删除“$”和“,”)?

infile = open('sample.txt', 'r')
list_2016 = [line.rstrip() for line in infile]
infile.close()
list_2016 = [i[1:] for i in list_2016]  # dropping $
list_2016 = [list_2016.replace(',', '') for i in list_2016]  # dropping ','
list_2016 = [float(x) for x in list_2016]

【问题讨论】:

  • 您想要文件中每一行的单独列表(即列表列表),还是一个浮动列表中的所有内容?
  • 不,只是一个巨大的列表,文件中的每一行都采用以下格式:$000,000.00。然后我需要计算整个文件的平均值。文件很大(几百万行)

标签: python string


【解决方案1】:

不是最优雅的,但是:

s = "$42,198.98 $1,305.04 $1,821.91 $105,747.79 $100,931.55"
f = [float(x) for x in s.replace("$",'').replace(',','').split()]

print(f)    # [42198.98, 1305.04, 1821.91, 105747.79, 100931.55]

想法:

  • 换行,将美元符号和逗号都替换为空(从字符串中删除)
  • 调用字符串的 .split() 方法,默认情况下,该方法在空格上分割
  • 使用列表推导将 now-list-of-strings 转换为浮点数

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-08
    • 2012-05-08
    • 1970-01-01
    • 2011-05-27
    • 2021-07-26
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多