【问题标题】:For Loop is not Following IndentationsFor 循环不跟随缩进
【发布时间】:2016-09-10 05:04:59
【问题描述】:

下午好,

我在下面的加星号 for 循环中遇到了一些奇怪的行为。下面的函数本质上是迭代输入字典patient_features,将几个字符串连接起来生成一个 SVMLight 风格的向量。然后打算将此向量写入可交付成果文件。但是,由于某种原因,函数末尾的写入会在每次迭代的星号 for 循环中被调用,从而导致文件过大(以及其他一些更小的问题)。任何有关可能导致此问题的帮助将不胜感激。

def save_svmlight(patient_features, mortality, op_file, op_deliverable):

    deliverable1 = open(op_file, 'wb') # feature without patient id
    deliverable2 = open(op_deliverable, 'wb') # features with patient id
    d1_line = ''
    d2_line = ''
    count = 0 # VALUE TO TEST IF INCREMENTING
    print count
    for patient_id in patient_features: #**********
        value_tuple_list = patient_features[patient_id]
        value_tuple_list.sort()
        d2_line += str(int(patient_id)) + ' '
        if patient_id in mortality:
            d1_line += str(1) + ' '
            d2_line += str(1) + ' '
        else:
            d1_line += str(0) + ' '
            d2_line += str(0) + ' '
        for value_tuple in value_tuple_list:
            d1_line += str(int(value_tuple[0])) + ":" + str("{:1.6f}".format(value_tuple[1])) + ' '
            d2_line += str(int(value_tuple[0])) + ":" + str("{:1.6f}".format(value_tuple[1])) + ' '


    count += 1
    print count # VALUE INCREMENTS WHEN IT SHOULD NOT
    deliverable1.write(d1_line); # <- BEING WRITTEN TO EACH LOOP :(
    deliverable2.write(d2_line); # <- BEING WRITTEN TO EACH LOOP :(

【问题讨论】:

  • 您正在混合制表符和空格。不要那样做。 Python 认为 tab = 8 个空格
  • 逐步完成整个过程,用四个空格替换所有选项卡,问题自行解决。考虑到我已经花了大约 4 个小时来思考其他问题,我非常感谢你。太久没有用 Python 做任何事情了,忘记是怎么回事了。
  • 一些文本编辑器有一个设置,您可以关闭标签以避免这种情况。
  • @mongolol 如果你将-t 选项传递给python解释器,它会警告你混合制表符和空格。

标签: python python-2.7 for-loop


【解决方案1】:

问题在于在代码中同时使用缩进和制表符。如果您将两者混合使用,Python 不是一个粉丝:/

如果您使用 Sublime Text,请选择所有文本以供将来参考,然后在顶部工具栏中转到 View &gt; Indentation &gt; Convert Tabs to Spaces,问题将得到解决。

我想我会省去你手动搜索每个标签并替换它的麻烦:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 2012-11-07
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多