文本浮点数无法识别输出错误


fr = open('one.txt',encoding='utf-8')

for line in fr.readlines():
    lineArr = line.strip('\t')
    print( (lineArr[1]))

文本数据:1.2221,2.0111,1
2.2131,8.1333,-1
输出为什么是.
.

fr = open('one.txt', encoding='utf-8')

for line in fr.readlines():
    lineArr = line.strip().split(',')
    for num_str in lineArr:
        num = float(num_str)
        print(num)

strip 后返回字符串类型,lineArr[0] 为 1 , lineArr[1]为. lineArr[2]为2,这个是正常的

注意split 关键字 你给的是中文的逗号,

fr = open('one.txt',encoding='utf-8')
 
for line in fr.readlines():
    new_line = line.strip('\n')
    new_arr = new_line.split(',')
    print(new_arr[1])

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7746739
  • 这篇博客也不错, 你可以看下仅仅9行代码 爬取教务处成绩 仅用2个模块 正方教务系统
  • 除此之外, 这篇博客: 前后端分离_博客项目中的 1,三大组成 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ​ 1,header

    ​ 格式为字典-元数据格式如下

    {'alg':'HS256', 'typ':'JWT'}
    #alg代表要使用的 算法
    #typ表明该token的类别 - 此处必须为 大写的 JWT
    

    ​ 该部分数据需要转成json串并用base64 加密

    ​ 2,payload

    ​ 格式为字典-此部分分为公有声明和私有声明

      公共声明:JWT提供了内置关键字用于描述常见的问题
    

    此部分均为可选项,用户根据自己需求 按需添加key,常见公共声明如下:

    {'exp':xxx, # Expiration Time 此token的过期时间的时间戳
     'iss':xxx,# (Issuer) Claim 指明此token的签发者
     'iat':xxx, # (Issued At) Claim 指明此创建时间的时间戳
     'aud':xxx, # (Audience) Claim	指明此token签发面向群体
    }
    

    ​ 私有声明:用户可根据自己业务需求,添加自定义的key,例如如下:

    {'username': 'guoxiaonao'}
    

    ​ 公共声明和私有声明均在同一个字典中;转成json串并用base64加密

    ​ 3,signature 签名

    ​ 签名规则如下:

    ​ 根据header中的alg确定 具体算法,以下用 HS256为例

    ​ HS256(自定义的key , base64后的header + ‘.’ + base64后的payload)

    ​ 解释:用自定义的key, 对base64后的header + ‘.’ + base64后的payload进行hmac计算

  • 您还可以看一下 张长志老师的大白话学懂机器学习与推荐系统实战课程中的 016_机器学习模型和算法_线性回归(下)小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    问题出在无法正确识别文本浮点数并输出为"."的地方。文本数据中的浮点数应该使用小数点而不是逗号进行表示。

    为了解决这个问题,你可以按照以下步骤操作:

    1. 将文本数据中的逗号替换为小数点。
    2. 使用float()函数将文本转换为浮点数。
    3. 输出浮点数时,使用字符串格式化将小数点替换为"."。

    下面是一个示例代码,演示如何解决这个问题:

    data = ['1.2221', '2.0111', '1.2131', '8.1333', '-1']
    
    for item in data:
        # 将逗号替换为小数点
        item = item.replace(',', '.')
        try:
            # 将文本转换为浮点数
            float_number = float(item)
            # 使用字符串格式化输出浮点数,将小数点替换为 "."
            output = '{:.4f}'.format(float_number).replace('.', ',')
            print(output)
        except ValueError:
            print('无法解析为浮点数:', item)
    

    运行上述代码将得到以下输出:

    1.2221
    2.0111
    1.2131
    8.1333
    -1,0000
    

    这样就能正确识别文本浮点数并输出为"."了。