0

私はPythonが初めてで、Webサービスからデータを抽出してリストに入れ、テキストファイルに書き込むコードを実行しています。このコードを実行してテキスト ファイルを開くと、データは連続しています。テキストファイルのすべての行に、5 つの要素を表示し、次の行に移動して次の 5 つの要素を書き込むなどのようなものが必要です。これについて、またはこれを行う他の方法についての提案を手伝っていただければ幸いです。これがコードです。

f = open("test.txt", "w")

for item in test:
    f.write("%s    |    " % item)
f.close()

結果は次のようになります。

data1, data2, data3, data4, data5, data6, data7, data8......................

次の形式にする必要があります。

data   |   data2   |   data3   |   data4   |
data5  |   data6   |   data7   |   data8   |
data9  |   data10  |   data11  |   data12  |

ご意見をお聞かせいただければ幸いです。ありがとうございました!

4

4 に答える 4

3

それらの文字はリストにはありませんリストです

>>> print ''.join(['foo', 'bar', 'baz'])
foobarbaz
于 2012-10-11T04:27:29.437 に答える
1

@Ignacioが言ったように、リストの印刷方法を変更する必要があります。

for line in list_s:
    # f.write("%s\n" % line) 
    f.write(''.join(line))

テーブルに表示する場合は、次のように各行をフォーマットできます。

>>> print '{0:10s} {1:10s} {2:10s}'.format('foo', 'bar', 'baz')
foo        bar        baz       

または行付き:

>>> print '{0:10s} | {1:10s} | {2:10s}'.format('foo', 'bar', 'baz')
foo        | bar        | baz    

詳細については、Pythonの入力と出力のドキュメントを参照してください

于 2012-10-11T05:08:29.507 に答える
1
for i, item in enumerate(test):
    if i and i % 4 == 0:
        f.write("\n")
    f.write("%-9s|   " % item)
于 2012-10-11T07:10:54.413 に答える
0

「特殊文字」とは何ですか?あなたが持っているデータのエンコーディングは何ですか?先に進む前に、エンコーディングとは何か、Unicode とは何か、そして世界とデータが主に英語で使用される 26 文字に限定されないことを理解することが重要です。 これについては、この記事を参照してください。

とは言っても、Python は選択したエンコーディングでデータをエンコードできます (ASCII も含む)。そのため、文字 32 から 127 のみが取得され、ã、ç、É などの「見知らぬ」文字はまったく取得されません。または、データをエンコードすることもできます。 utf-8 で、私たちが地球上で使用しているすべての文字列を使用できるようにします。ただし、Unicode データしか「エンコード」できない場合 (Python は、エンコード文字列メソッドを使用する前にバイト文字列を暗黙的に Unicode に変換しようとします)、とにかくデータ ソースのエンコードを知る必要があります。データが (実行中のプログラム内で) Unicode にデコードされると、それを目的の出力 (ASCII または "quopri_codec" など) にエンコードし、呼び出しで "errors" キーワード パラメーターを "ignore" または "xmlcharrefreplace" に設定できます。エンコードします。

よりよく理解するには、Pythonのコーデックのドキュメントを確認してください。

たとえば、入力データが iso8859_15 (別名 latin1 または cp1252 put または take 2 char 定義) でエンコードされていると仮定すると、実際には英語以外の文字を抑制するつもりであるとします。

s = client.service.GetData('data1')
s = s.decode("iso88159_15").encode("ASCII", errors="ignore")
sr = '<root>%s</root>' % s
root = ET.fromstring(sr)

Otoh、あなたはxmlをエンコードしているので、扱いたくない文字へのxml参照を入れても害はありません-(おそらくutf-8へのエンコードも害はないでしょう):

s = s.decode("iso88159_15").encode("ASCII", errors="xmlcharrefreplace")
于 2012-10-11T03:44:17.130 に答える