-3

このコードを調べて、すべてのタブを削除し、スペースに置き換えました。File "xxxx" の 14 行目を除きます: IndentationError: unindent is not match any outside indentation level

誰でも他の問題を見ることができますか?

### colorize_svg.py

import csv
from BeautifulSoup import BeautifulSoup

# Read in unemployment rates
unemployment = {}
min_value = 100; max_value = 0
reader = csv.reader(open('unemployment09.csv'), delimiter=",")
for row in reader:
        try:
            full_fips=row[1]+row[2]
            rate=float(row[8].strip())
            unemployment[full_fips]=rate
        except:
            pass


# Load the SVG map
svg = open('counties.svg', 'r').read()

# Load into Beautiful Soup
soup = BeautifulSoup(svg, selfClosingTags=['defs','sodipodi:namedview'])

# Find counties
paths = soup.findAll('path')

# Map colors
colors = ["#D73027", "#FC8D59", "#FEE090", "#E0F3F8", "#91BFDB", "#4575B4"]

    # County style
    path_style = 'font-size:12px;fill-rule:nonzero;stroke:#FFFFFF;stroke-opacity:1; stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:butt;marker-start:none;stroke-linejoin:bevel;fill:'



# Color the counties based on unemployment rate
for p in paths:

    if p['id'] not in ["State_Lines", "separator"]:
        # pass
        try:
            rate = unemployment[p['id']]
        except:
            continue

        if rate > 10:
            color_class = 5
        elif rate > 8:
            color_class = 4
        elif rate > 6:
            color_class = 3
        elif rate > 4:
            color_class = 2
        elif rate > 2:
            color_class = 1
        else:
            color_class = 0


        color = colors[color_class]
        p['style'] = path_style + color

print soup.prettify()
4

4 に答える 4

2

2つのこと:

最初の for ループは本体に追加の識別レベルがあるようですが、これはコピー/貼り付けに問題がある可能性があります。

と:

# Find counties
paths = soup.findAll('path')

# Map colors
colors = ["#D73027", "#FC8D59", "#FEE090", "#E0F3F8", "#91BFDB", "#4575B4"]

    # County style
    path_style = 'font-size:12px;fill-rule:nonzero;stroke:#FFFFFF;stroke-opacity:1; stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:butt;marker-start:none;stroke-linejoin:bevel;fill:'

ここでわかるように、path_style は色に合わせて調整する必要があります。それがおそらくあなたのエラーです。

于 2012-08-01T14:18:43.410 に答える
1

すべてのタブをスペースに置き換えなかったことがインデント エラーの原因である可能性は十分にあります。確かに、私には十分に頻繁に起こりました-もう一度調べて、タブが残っていないことを確認してください.

于 2012-08-01T14:31:19.547 に答える
1

コードを Python に貼り付けると、IndentationError が 1 つだけ表示されます - at:

    # County style
    path_style = 'font-size:12px;fill-rule:nonzero;stroke:#FFFFFF;stroke-opacity:1; stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:butt;marker-start:none;stroke-linejoin:bevel;fill:'

これはインデントされるべきではないため、表示されているものとはわずかに異なるエラーが発生します (「予期しないインデント」)。

つまり、表示されている IndentationError は、コードと StackOverflow の間でコピーして貼り付けるときに維持されない、タブとスペースの組み合わせによって引き起こされたものでなければならないことを意味します。行 14 は先頭の for ループです。これと関連する では、タブとスペースの組み合わせが異なっているexcept:ことがわかります。try

これにはさまざまな修正があります。たとえば、try:except:両方の前部からインデントを削除し、均一なインデントに置き換えることができます (タブからスペースへの設定または設定解除があることを確認して、両方でタブを 1 回押します)。ファイルの残りの部分で使用されているスタイルと一致します)。しかし、より簡単な方法は、質問からコードをコピーして .py ファイルに貼り付けることです。

于 2012-08-01T14:38:41.647 に答える
0

非表示のスペースとタブを表示できるエディターでコードを確認してください。タブとスペースを混同すると、このような多くの問題が発生しました.1つの形式のインデントのみに固執してください.

于 2012-08-01T14:33:24.833 に答える