Hatena::ブログ(Diary)

arupaka-_-arupakaの日記

2009-11-07

リスト表示されたネットワークのノードのランダム置換。(2行ファイルの文字列の置換)

pythonで2行のランダムに文字列置き換える。これは、リスト表示されたネットワークのランダム置換に使用できる。


import random
import sys
import csv

a1=[]
a2=[]
for row in csv.reader(file(sys.argv[1])):
        col1,col2=row
        a1.append(col1.strip("\n"))
        a2.append(col2.strip("\n"))


a=a1+a2
a=list(set(a))
b=a[:]
random.shuffle(a)

ch={}

for str1,str2 in zip(a, b):
        ch[str1]=str2;

for i,j in zip(a1,a2):
        print ch[i],ch[j]



#cheak用 置換パターン
#for i,j in ch.iteritems():
#        print i,j
#置換後の値 元の値として出力
#for i,j in zip(a1,a2):
#        print ch[i],ch[j]
#

 pythonで2列のcsvファイルの内容を連想配列に

pythonで2列のcsvファイルの内容を連想配列

次のcsvファイル連想配列に代入。

a,1

b,2

c,3


結果、連想配列

ch['a']=1

ch['b']=2

ch['c']=3

となる。

コード


import random
import sys
import csv

#filename=sys.argv[1]
a1=[]
a2=[]
for row in csv.reader(file(sys.argv[1])):
        col1,col2=row
        a1.append(col1.strip("\n"))
        a2.append(col2.strip("\n"))

ch={}

for str1,str2 in zip(a1, a2):
        ch[str1]=str2;

for i,j in ch.iteritems():
        print i,j

 pythonでデータのランダムシャッフル2

pythonでデータのランダムシャッフル2。

連想配列に記録。

import random
import sys
import csv

#filename=sys.argv[1]
a1=[]
a2=[]
for row in csv.reader(file(sys.argv[1])):
        col1,col2=row
        a1.append(col1.strip("\n"))
        a2.append(col2.strip("\n"))


a=a1+a2
a=list(set(a))
b=a[:]
random.shuffle(a)
j=0;

ch={}

for str1,str2 in zip(a, b):
        ch[str1]=str2;

for i,j in ch.iteritems():
        print i,j

 pythonの連想配列

pythonでの連想配列

pythonでは辞書型という。

#中かっこで定義
a={}

# key:value の形式で定義
b={'one':1,'two':2,'three':3}
print b['one'],b['two']

# keyを外から与える。
d='four'
b[d]=4
print b[d]


参考

http://docs.python.org/library/stdtypes.html#typesmapping

python の便利なレファレンス

便利

http://www.shido.info/py/python2.html

zip(a,b)はa,bまとめて、

イテレート(ループ)

できる。

>|python|

for i,j in zip(a,b):

print i,j

||<

 pythonでcsvファイル読み取りランダムシャッフル

pythoncsvデータを

読み込み一行にしてランダムシャッフル


import random
import sys
import csv

#filename=sys.argv[1]
a1=[]
a2=[]
for row in csv.reader(file(sys.argv[1])):
        col1,col2=row
        a1.append(col1)
        a2.append(col2)


a=a1+a2
a=list(set(a))
b=a[:]
random.shuffle(a)
j=0;

for str in b:
        print str.strip("\n")+","+a[j].strip("\n")
        j=j+1;

pythonでuniq風。

ただし、順番を保存しないので、

注意。

 a=list(set(a))

 pythonでデータのランダムシャッフル

pythoncsvファイルを読み込む。

一つめのコマンド引数でファイルを指定

python test.py [filename]

awk -F, '{print $1,$2}' [filename]

とおなじ。

test.py

 import random
 import sys
 import csv

 for row in csv.reader(file(sys.argv[1])):
         col1,col2=row
         print col1,col2

 pythonでデータのランダムシャッフル

pythonでデータのランダムシャッフル

入力ファイル

1

2

3

4

5

出力ファイル

1,3

2,4

3,2

4,1

5,5

コード:

 import random
 import sys

 file=sys.argv[1]
 #print file
 

 a=[]
 #ファイル読み込み
 for line in open(file,'r'):
         a.append(line.strip("\n"))

 #配列のコピー、b=aではだめ。
 a_moto=a[:]
 #ランダムシャッフル
 random.shuffle(a)

 #カンマ区切りで出力
 for str1,str2 in zip(a_moto,a):
         print str1+","+str2

ファイル入力の部分を一行にまとめる。

import random
import sys

file=sys.argv[1]
a=open(file,'r').readlines()
b=a[:]
random.shuffle(a)
j=0;
for str in b:
        print str.strip("\n")+","+a[j].strip("\n")
        j=j+1;


乱数モジュールの説明

http://www.python.jp/doc/2.4/lib/module-random.html

ランダムモジュールの使い方

http://www.yukun.info/blog/2008/06/python-random.html

コマンドライン引数

http://www.yukun.info/blog/2008/07/python-command-line-arguments.html

文字列処理の比較

http://0xcc.net/blog/archives/000137.html

CSVファイルの読み取り

http://mitsukuni.org/blog/2009/07/10/pythoncsvファイルを読み込む/

ファイルの読み込み

http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/python/readfile.html

ファイル読み込み2

http://www40.atwiki.jp/geiinbashoku/pages/24.html