【问题标题】:Multiply 10th index for every line by 2将每行的第 10 个索引乘以 2
【发布时间】:2020-05-03 09:55:26
【问题描述】:

我对编程很陌生,所以我想我会从看似简单的任务开始。但是我遇到了困难,所以我希望得到您的一些反馈。

我想做什么:

我有一个包含 32 行字符串的文件。

我想将每个字符串的第 10 个索引乘以 2。

然后我想用新计算的数字替换每个字符串的第10个索引。

然后我想保存到文件到一个新目录。

到目前为止我做了什么(很可惜):

我能够提取字符串中的第 10 个数字并将其乘以 2。但是,我似乎无法将乘积后的数字正确地加入到预先存在的字符串中。

我也不知道如何将文件写入新目录。

32 个字符串之一的示例:

FLBR id 'Knoop_debiet2' sc 0 lt 0 dc lt 0 0.05 0 flbr

到目前为止我的代码:

f = open('C:\\Sobek215\\PythonWd.lit\\1\\LATERAL.DAT', 'r')
linelist = f.readlines()
print(linelist)
f.close

for line in linelist:
    line = line.split(' ')
    flow = float(line[10])
    fl_2Q = flow*2
    print(fl_2Q)
    line[10] = str(fl_2Q)
    ListToString = ' '.join(str(linelist) for line[10] in line)
    print(linelist)

【问题讨论】:

    标签: python string line overwrite multiplication


    【解决方案1】:

    我会做如下的事情(准伪代码):

    f = open('dir/file.txt', 'r')
    l = [" ".join([line.split()[c] if c != 10 else str(float(line.split()[c])*2) for c in range(len(line.split()))]) for line in f.read().splitlines()]
    with open('newdir/file.txt', 'w') as n:
        n.write("\n".join(l))
    

    【讨论】:

    • 感谢您的回答。它为我返回一个错误: ValueError: could not convert string to float: 'F'
    • 新错误,ValueError:无法将字符串转换为浮点数:'FLBR'。 FLBR 是我的字符串中的第一个单词,它位于我试图通过 Python 编辑的文本文件中。这看起来很正常,因为 FLBR 不是数字,所以它不能变成字符串。对吗?
    • @T.M.1995 很抱歉,有一个小错误。新的编辑应该可以工作。
    • 解决了最后一个错误,但现在我被困住了:TypeError: can only join an iterable。这是什么意思,我该如何解决? (:
    • 仍然是 TypeError: can only join an iterable 的错误。它在代码的第 4 行,意思是:n.write("\n".join(l))。这是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2021-05-19
    • 2014-01-29
    • 2019-08-25
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多