この記事では、主にPythonを紹介して、単純なファイルの読み取りおよび書き込み関数を詳細に実装します。この記事のサンプルコードは非常に詳細で、特定の参照値があります。興味のある友人はそれを参照できます。 |
Pythonはスクリプト言語であり、その使いやすさも兼ね備えています。多くの場合、データとフォーマットを処理するためのスクリプトとして使用されます。その中で、ファイルの処理は頻繁に使用されるものの1つです。一般的に使用されるxlsおよびtxtの読み取りおよび書き込み関数をいくつか作成するだけで、将来すぐに再利用できます。
xlrdライブラリ関数の使用は事前にインストールする必要があります
コマンド:pip install xlrd
ソースコードを直接貼り付けます。
#!/ usr / bin / python #coding:utf-8 import json import xlrd import sys reload(sys) sys.setdefaultencoding( 'utf-8') class ObjectFileReadAndWrite(object): @ classmethod def readXlsToDict(cls、xlsFile): '' ' 读取xls文件生成dict ' '' data = xlrd.open_workbook(xlsFile) table = data.sheet_by_index(0) ret = [] keys = table.row_values(0) for rowNum in range(table.nrows): oneRowValues = table.row_values(rowNum) if rowNum> 0: d = {} for colIdx、key in enumerate(keys): d [key] = oneRowValues [colIdx] ret.append(d) return ret @classmethod def readXlsToList(cls、xlsFile): '' ' xlsファイルを 読み取ってリストを生成する ' '' data = xlrd.open_workbook(xlsFile) table = data.sheet_by_index(0) ret = [] for rowNum in range(table.nrows ): oneRowValues = table.row_values(rowNum) ret.append(oneRowValues) return ret @classmethod def readTxt(cls、txtFile、sep): '' ' txtファイルを読み取る ' '' #+ openで完了を保証できますwithステートメントの次に、開いているファイルハンドルを同時に閉じます。 ret = [] with open(txtFile、 "r")as f: for line in f.readlines(): line = line.strip( '\ n')#改行を削除 listInfo = line。 ret.append(listInfo) return ret @classmethod def writeToJson(cls、jsonFile、ret): '' ' 写入json文件 ' '' with open(jsonFile、 'w')as fp: json.dump(ret、fp、 indent = 2、sort_keys = True、encoding = "utf-8"、ensure_ascii = False) @classmethod def writeFromStr(cls、filePath、s): '' ' string写入文件 ' '' with open(filePath、 'w' )as fp: fp.write(s) @classmethod def writeFromList(cls、filePath、wList): '' ' list写入文件 ' '' with open(filePath、 'w')as fp: fp。writelines(wList) if __name__ == " __main __ ":obj = ObjectFileReadAndWrite() #XLS RET = obj.readXlsToDict(xlsFile = 'xxx.xls') obj.writeToJson( 'xxx.json'、RET) #TXT RET2 = obj.readTxt(txtFile = 'result.txt'、9月=」「) obj.writeToJson( 'result.json'、RET2)
ファイルに中国語が含まれているため、途中で中国語の文字化けが発生します
import sys reload(sys) sys.setdefaultencoding( 'utf-8') #encoding = "utf-8"、ensure_ascii = False
1.これは、UnicodeエンコーディングとASCIIエンコーディングの非互換性が原因で発生します。
2.通常はASCIIであるため、Pythonは自然にASCIIエンコードおよびデコードプログラムを呼び出して文字ストリームを処理します。文字ストリームがASCII範囲に属していない場合、例外がスローされます(通常はrange(128)にありません)。
Baiduは上記の方法でそれを解決しました。上記はこの記事の全内容です。皆さんの学習に役立つことを願っています。