【问题标题】:Beginner issues with python script output [closed]python脚本输出的初学者问题[关闭]
【发布时间】:2014-09-17 15:33:23
【问题描述】:

以下 Python 代码未按预期运行。

最终输出缺少我希望在output_data[1] == "S" 处输出的所有行。

看来我混淆客户端 ID 的懒惰尝试也失败了。

import csv

TID = 0
ACCT_TYPE = 1
PRODUCT_TYPE = 2
NUM_ACCT_OWNERS = 3
NUM_ACCT = 4
COMBINED_BALANCES = 5
TID_BALANCES = 6
INSURED_BALANCES = 7
ESTIMATED_UNINSURED = 8
FOREIGN_IND = 9

#output_data = [None] * 10

header_row_processed = False

with open("U:\exampletext.txt", 'r') as csvfile:
CIN = csv.reader(csvfile, delimiter="\t")
file_output_data = []
for row in CIN:

    if not header_row_processed:
        header_row_processed = True
        continue

    if not row[ACCT_TYPE] == "I" or row[ACCT_TYPE] == "S":
         continue

    if not row[PRODUCT_TYPE] == "Total":
         continue

    output_data = [None] * 6

    client_id = row[TID]
    client_id.replace("0", "x")
    client_id.replace("1", "d")
    client_id.replace("2", "h")
    client_id.replace("3", "g")
    client_id.replace("4", "v")
    client_id.replace("5", "n")
    client_id.replace("6", "m")
    client_id.replace("7", "q")
    client_id.replace("8", "w")
    client_id.replace("9", "r")
    client_id.replace("-", "u")
    output_data[0] = client_id

    output_data[1] = row[ACCT_TYPE]

    output_data[2] = row[PRODUCT_TYPE]

    output_data[3] = row[COMBINED_BALANCES]

    output_data[4] = str(min(float(row[COMBINED_BALANCES])/float(row[NUM_ACCT_OWNERS]), 250000*float(row[NUM_ACCT_OWNERS])))

    output_data[5] = str(max(0, (float(row[COMBINED_BALANCES])/float(row[NUM_ACCT_OWNERS]))-(250000*float(row[NUM_ACCT_OWNERS])))*(float(row[NUM_ACCT_OWNERS])))

    file_output_data.append("\t".join(output_data))

    #file_output_data = ','.join(str(v) for v in value_list)

    if output_data[1] == "I":
        out_file = open(
        'U:\path_one.txt', 'w')
        out_file.write("\n".join(file_output_data))
        out_file.close()

    if output_data[1] == "S":
        out_file = open(
        'U:\path_two.txt', 'w')
        out_file.write("\n".join(file_output_data))
        out_file.close()

【问题讨论】:

  • 你的continues 似乎没有缩进。
  • 你能告诉我们预期的输出和实际输出吗?
  • 这是一个可怕的问题描述。你能把代码减少到minimal example,并更正缩进吗?你期待什么,你看到了什么? “失败”究竟是什么意思?
  • @jonrsharpe 我会减少,但我不确定错误在哪里。缩进更正。通过失败,我的意思是它似乎正在输出原始字符串而没有任何更改。感谢您的帮助。
  • @Brandon 基本思想是减少代码,然后查看错误消失的步骤。这使您对错误的性质有所了解。然后,如果您仍然不明白哪里出了问题,您可以针对该问题提出问题。

标签: python output


【解决方案1】:

您的错误在于:

client_id = row[TID]
client_id.replace("0", "x")
client_id.replace("1", "d")
client_id.replace("2", "h")
client_id.replace("3", "g")
client_id.replace("4", "v")
client_id.replace("5", "n")
client_id.replace("6", "m")
client_id.replace("7", "q")
client_id.replace("8", "w")
client_id.replace("9", "r")
client_id.replace("-", "u")
output_data[0] = client_id

去为它写一个单元测试,看看代码做了什么。 replace 不会做你认为它做的事情。

【讨论】:

    猜你喜欢
    • 2022-06-13
    • 2021-02-13
    • 1970-01-01
    • 2022-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多