1

グラフからランダムなエッジを生成して印刷していますが、テキストファイルに保存しようとするたびに、のようなエラーが発生しTypeError: expected a character buffer objectます。コードは以下のとおりです。

import re
import md5
import pickle
import networkx as nx
import itertools
from random import choice

ff=open("testfile.txt","r+")
G=nx.read_gpickle("authorgraph_new.gpickle")
for nodes in G:
    random_edge=choice(G.edges())
    ff=open("testfile.txt","a")
    ff.write(random_edge)

random_edgeの値はの形式であるため、random_edgeの出力をテキストファイル(できれば列)に保存する必要があります(abcdef, pqrstu)。2つを同じ行の別々の列に配置し、次の値を同じ列に配置したいと思います。"\n"を使用して出力を改行に変換できることはわかっていますが、

ff.write(random_edge + "\n")

エラーが発生しますTypeError: can only concatenate tuple (not "str") to tuple

4

2 に答える 2

2

その場合、次のように2行で実行してみてください。

for nodes in G:
    ff.write(random_egde)
    ff.write('\n')

これがあなたのケースでうまくいくことを願っています。
ここで、最初の行はデータを書き込み、2番目の行はデータに新しい行を追加します。

于 2012-05-30T09:11:44.390 に答える
0

Joelのコメントは正しいです。結果(タプル)を改行文字である文字列と連結しています。Pythonは、そのようにデータ型を混合することを好みません。より複雑な構造化データを作成している場合は、将来的にPythonのcsvモジュールも調べたいと思うかもしれません。

于 2012-05-30T12:58:24.043 に答える