【问题标题】:Removing decimals from strings从字符串中删除小数
【发布时间】:2022-11-16 23:45:21
【问题描述】:

我现在正在学习 python 的入门课程,但在完成这项任务时遇到了一些麻烦。

我有两个格式的字符串:

a b c d e  
f g h i l

我需要从 .txt 文件中获取这些字符串,将它们作为矩阵转换为垂直格式,如下所示:

a f
b g
c h
d i
e l

并放入另一个 .txt 文件,而不使用 numpy 和 pandas 库。问题是从这样的矩阵:

1 2 3 4 5 
6 7 8 9 10 

每个数字不必是整数,我需要得到这个矩阵:

1 6
2 7
3 8 
4 9
5 10

现在我只能用小数得到:

1.0 6.0
2.0 7.0
3.0 8.0
4.0 9.0
5.0 10.0

因此,从我的 POW 中,我需要以某种方式从最终结果中删除 .0,但我不知道如何从字符串中删除小数,包括浮点数。

这是我的代码:

with open('input.txt') as f:
    Matrix = [list(map(float, row.split())) for row in f.readlines()]
TrMatrix=[[Matrix[j][i] for j in range(len(Matrix))] for i in range(len(Matrix[0]))]
file=open('output.txt','w')
for i in range(len(TrMatrix)):
    print(*TrMatrix[i],file=file)

【问题讨论】:

    标签: python string matrix decimal


    【解决方案1】:

    将浮点数更改为整数。 float 包含小数。 int 没有。

    【讨论】:

    • 对不起,我没有在问题中提到它。来自基本 txt 文件的数据可以是浮动的。
    • @sasaikudasai 你想如何从一个应该有小数的值中去掉小数? .0 是因为数字是浮点数,所以你希望 3.4 发生什么?请使用此信息更新您的问题
    • @EmiOB,我希望,我现在说得更清楚了
    【解决方案2】:

    据我了解您的问题,这是解决方案

    with open('input.txt') as f:
        cols = []
        for row in f.readlines():
            col = [int(float(i)) for i in row.split()]
            cols.append(col)
    new_rows = []
    for i in range(len(cols[0])):
        new_rows.append(' '.join([str(col[i]) for col in cols]))
    Tr_matrix = '
    '.join(new_rows)
    with open('output.txt','w') as file:
        file.write(Tr_matrix)
    print(Tr_matrix)
    

    输入:

    1 2 3 4.6 5.4 
    6 7 8 9 10 
    

    输出:

    1 6
    2 7
    3 8
    4 9
    5 10
    

    【讨论】:

    • 问题是第一个矩阵仍然有数字作为整数,在我的任务中它说数字可以是浮点数。不过还是谢谢!
    • 我调整了答案。现在即使数字是浮点型它也能工作。这里 int 只是去掉小数点。如果要将其四舍五入为最接近的整数,请使用round(float(i)) 而不是int(float(i))
    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2012-06-05
    • 2013-03-12
    • 2013-06-24
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多