【问题标题】:Converting String Data Values with two commas from csv or txt files into float in python将带有两个逗号的字符串数据值从csv或txt文件转换为python中的浮点数
【发布时间】:2021-02-10 13:14:29
【问题描述】:

我刚收到一个 HPLC 运行的数据集,我遇到的问题是软件中的 txt 数据生成了两个点分隔的值,例如“31.456.234 min”。因为我想用 matplotlib 和 numpy 绘制数据,所以我只能看到没有用两个逗号列出值的数据。这是因为每个小于 1 的值都用一个逗号表示,如“0.765298”,如前所述,其余值用两个逗号列出。 我试图用 .split() 和 .find() 方法解决这个问题,但是,这很不方便,我想知道是否会有更优雅的方法来解决这个问题,因为我最终需要再次 x和用于绘图的 y 值。

非常感谢您提前提供的任何帮助答案。

【问题讨论】:

    标签: python string csv txt


    【解决方案1】:

    关于逗号和点,这不是很清楚。 对于你说你有逗号但你显示一个点的十进制数:0.765298

    我猜你不能用点来表示千位分隔符和小数点...

    如果你有英文符号,我猜数字是: “31,456,234 分钟”和“0.765298”

    在这种情况下,您可以使用替换方法:

    output = "31,456,234"
    number = float(output.replace(',',''))
    # result : 31456234.0
    

    编辑

    不太确定是否了解您要查找的内容以及数字的格式...

    但是,如果不需要 31.456.234 中的第二个逗号,这里有一个解决方案:

    def conv(n):
        i = n.find('.')
        return float(n[:i]+'.'+n[i:].replace('.',''))
    
    x = '31.456.234'
    y = '0.765298'
    
    print(conv(x)) # 31.456234
    print(conv(y)) # 0.765298
    

    【讨论】:

    • 嘿!很抱歉造成误解,但我的意思是点(在德语中我们说逗号)对不起。所以是的,基本上所有值都用点分隔,就像我用“31.456.234 min”指出的那样,该值将是 31.46 min,但是,系统提供了一种精确值的方法,并且使用两个点而不是一个点。吸光度值也会发生同样的情况。
    • 你的意思是 31.456.234 = 31.456234 吗?
    • 是的,只是四舍五入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-21
    • 2022-06-15
    • 2011-10-01
    相关资源
    最近更新 更多