【问题标题】:How to correctly append the output to an empty list如何正确地将输出附加到空列表
【发布时间】:2021-06-19 07:38:57
【问题描述】:

我正在我选择的文本文件中查找单词。

def cash_sum(self):
    with open(self.infile.name, "r") as myfile:
        lines = myfile.readlines()

    for line in lines:
        if re.search("AMOUNT", line):
            x = []
            x.append(line[26:29])
            print(x)

我有这个输出:

['100']
['100']
['100']

我想添加它们,这样我就可以从这个文件中获得所有金额的总和。

有什么建议吗?

【问题讨论】:

  • 您是否尝试在循环之前定义x

标签: python arrays python-3.x list function


【解决方案1】:

在行迭代循环之外初始化x

另外,你不需要单独readlines()...

def cash_sum(self):
    x = []
    with open(self.infile.name, "r") as myfile:
        for line in myfile:
            if re.search("AMOUNT", line):
                x.append(line[26:29])
                # or cast to int before appending:
                # x.append(int(line[26:29]))
    return x

【讨论】:

  • OP 建议他们想求和,所以也许int(line[26:29])
  • 好点,@DeepSpace - 补充说:)
  • 还有一条评论。 :) 在这里使用正则表达式是多余的。一个简单的if 'AMOUNT' in line: 就足够了。
【解决方案2】:

这会给你总和...

 def cash_sum(self):

    with open(self.infile.name, 'r') as myfile:
        lines = myfile.readlines()

    totalAmount = 0

    for line in lines:

        if re.search("AMOUNT", line):

            totalAmount += float(line[26:29])

【讨论】:

    【解决方案3】:

    我建议的第一件事是将该值转换为浮点数。我说 float 而不是 int 以防万一你有小数点。例如, float('100') == 100.0 。一旦你有了它,你应该能够像普通数字一样将它们相加。

    【讨论】:

    • 你错过了真正的问题:在循环中创建的列表
    • 即使你做对了,你仍然不能添加字符串值,除非你想要的效果是'100100100'。
    • 根本没有说您提到的内容不正确或其他什么,这还不够。所以半答案不好,不管你选择半部分
    【解决方案4】:

    您在循环中重新定义了x,因此每次循环迭代时,它都会将 x 重置为空列表。请尝试以下操作:

    def cash_sum(self):
        with open(self.infile.name, "r") as myfile:
            lines = myfile.readlines()
        x = [] # That way x is defined outside the loop
        for line in lines:
            if re.search("AMOUNT", line):
                x.append(line[26:29])
                print(x)
        # And if you want to add each item in the list...
        num = float(0)
        for number in x:
            num = num + float(number)
        return num
    
    
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2021-11-14
      • 2017-02-21
      相关资源
      最近更新 更多