0

私はpythonが初めてで、テキストドキュメントから縦棒グラフを作成する任務を負っています。x軸の情報をリストに入れ、データもリストに入れました。私が抱えている問題は、チャートを出力しようとすると、「TypeError: unsupported operand type(s) for -: 'str' and 'int'.」というエラーが表示されることです。そして、そのエラーを解決する方法を見つけるのに苦労しています。リストの 1 つを型キャストする必要がありますか? それとも、リストのやり方が間違っているのでしょうか?

これが私のコードです:

from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.barcharts import VerticalBarChart

ExifOutput = open('ExifOutput.txt', 'r')

ImageMakeContainer = []
Container = []
makeList = []
numberList = []

lineReader = ExifOutput.readlines()

for line in lineReader:
    if 'Image Make: ' in line:
        ImageMakeContainer.append(line[13:-2])

for item in set(ImageMakeContainer):
    Container.append(item + " " + str(ImageMakeContainer.count(item)))

print Container

for data in Container:

    [int(num) for num in data.split() if num.isdigit()]

    make = data[0:-(len(num) + 1)]

    makeList.append(make)
    numberList.append(num)

print numberList
print makeList

ExifOutput.close()

data = numberList
axis = makeList

graph = Drawing(400, 300)

chart = VerticalBarChart()
chart.width = 300
chart.height = 200
chart.x = 30
chart.y = 40
chart.data = data
chart.categoryAxis.categoryNames = axis
chart.valueAxis.valueMin = 0

graph.add(chart)
graph.save(fnRoot='TestGraph', formats=['png', 'pdf'])

私があなたにとって十分に明確であることを願っています。(印刷ステートメントは、リストの内容を確認するためのものです)

[編集]プリントの出力は次のとおりです。

['Apple 1', 'FUJIFILM 5', 'Samsung Techwin 1']
['1', '5', '1']
['Apple', 'FUJIFILM', 'Samsung Techwin']
4

1 に答える 1

0

Python int を文字列に入れるには、 backticks の間に配置するだけですlike_this。例えば、

print three + `3`

次のようなフォーマットを使用して、同じ種類のことを達成することもできます

print "three%d" % 3
于 2012-04-11T19:01:04.533 に答える