【问题标题】:Adding calculated line to the same list将计算行添加到同一列表
【发布时间】:2014-02-14 05:19:04
【问题描述】:

我有一个包含数据的文件,即

2 3 5 6

我想计算 (2+3)/5 并用 \'t' 在 6 之后扩展结果值。即

2 3 5 6 1

如何做到这一点?我写了一个代码,但它只在列表末尾附加了值 我就是这样子的

2 3 5 6
 1

f=open('file', 'r')
lines=f.readlines()
import re 
for line in lines:
    new_list=re.split(r'\t+',line)
    a=new_list[0]
    b=new_list[1]
    c=new_list[2]
    d=new_list[3]
    y=((float(a)+float(b))/float(c))*100
    y=round(xy,1)
    y=str(y) 
    new_list.append(y)
    r=open('result', 'a')
    x='\t'.join(new_list)
    x=x+'\n'
    r.writelines(x)
f.close()
r.close()

【问题讨论】:

  • 顺便说一句,你可以把它缩短为a, b, c, d = new_list
  • 您可以添加使用此代码获得的输出吗?代码中的计算是((a-b)/c)*100。不是 (a+b)/c。故意的?
  • 你可能忘了去掉'\n'。 readlines() 没有剥离它,它只是分裂它。因此,请使用 new_list=re.split(r'\t+',line.strip()) 之类的内容。
  • @Evert 或者不使用正则表达式并使用 line.split() 这将...
  • @user3224522 我认为最好使用解决方案添加问题的答案。对于将看到此问题的其他人。

标签: python list append line extend


【解决方案1】:

只是添加了一个 line.strip,有时这个小东西就可以了

f=open('file', 'r')
lines=f.readlines()
import re 
for line in lines:
    new_list=re.split(r'\t+',line.strip())
    a=new_list[0]
    b=new_list[1]
    c=new_list[2]
    d=new_list[3]
    y=((float(a)+float(b))/float(c))*100
    y=round(xy,1)
    y=str(y) 
    new_list.append(y)
    r=open('result', 'a')
    x='\t'.join(new_list)
    x=x+'\n'
    r.writelines(x)
f.close()
r.close() 

【讨论】:

    【解决方案2】:

    这与您尝试的解决方案有些无关,但这是我解决问题的方式。我真的尽量避免使用正则表达式,在你的情况下绝对可以这样做。

    第一行获取您的文件并将其命名为 f(并在我们完成后自动关闭文件)。然后我将您的数据拆分并放入列表中,每次有空格时拆分。最初,输出是字符串,所以我把它们变成浮点数。然后我根据列表中的数字进行你想要的奇怪计算,并打印输出。

    with open('nums.txt','r') as f:
        line = f.readline()
        list_of_nums = line.split(" ")
        myNums = [float(num) for num in list_of_nums]
        weird_calculation = (myNums[0] + myNums[1]) / myNums[2]
        print(str(weird_calculation) + "\t" + str(myNums[3]))
    

    输出:

    1.0     6.0
    

    如果您只想将其中一些数字视为浮点数而将其他数字视为整数,则必须明确更改它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-13
      • 2012-06-18
      • 2017-09-23
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多