スポンサーリンク

dtype = "unicode"を指定して、numpy.loadtxt()で読み込む

データ型をunicode型に指定することで読み込むことができます。
**ただし、日本語の文字列などはエラーとなってしまいました。**
**下記のin.txtの文字列であれば読み込むことができました**

例えば、下記のようにin.txtがあったとします。

 $ cat in.txt 
d,e,[]
!,g,#

下記がサンプルコードになります。dtype = "unicode"を指定しています。
 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import numpy as np

npArray = np.loadtxt("in.txt", delimiter = ",", dtype = "unicode")

print (npArray)
print (npArray.dtype)

下記が実行結果になります。最後にdtypeを出力していますが、unicode型として扱われていることが確認できます。
 $ ./sample.py 
[['d' 'e' '[]']
 ['!' 'g' '']]
<U2

スポンサーリンク

fmt = "%s"を指定して、numpy.savetxt()でファイルに書き込み

文字列をcsv形式でファイル書き込みする場合には、fmt = "%s"を指定します。

例えば、下記のようにin.txtがあったとします。

 $ cat in.txt 
f,g,h
!,0,1
k,l,m

まず、numpy.loadtxt()でin.txtを読み込んで、その後、numpy.savetxt()でout.txtにcsv形式で書き込みをします。
 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import numpy as np

npArray = np.loadtxt("in.txt", delimiter = ",", dtype = "unicode")

print (npArray)
print (npArray.dtype)

print("csv形式でout.txtに出力")
npArray = np.savetxt("out.txt", npArray, delimiter = ",", fmt = "%s")

下記が実行結果になります。out.txtにcsv形式で出力できているが確認できます。
 $ ./sample.py 
[['f' 'g' 'h']
 ['!' '0' '1']
 ['k' 'l' 'm']]
<U1
csv形式でout.txtに出力
 $ cat out.txt 
f,g,h
!,0,1
k,l,m

スポンサーリンク