1
私は最初にカラムを追加する.csvファイルを持っています。 これで、特定のツールが正しく読み込まれるようにエンコーディングを変更する必要があります。Pythonのカウントラインに正しい番号が与えられていない
ファイルには約9,800行があります。列を追加する前と後の行数をカウントすると同じ数値になります。しかし、私がエンコーディングを変更した後に数えると、私は少なくなります。奇妙な部分は、ファイルを開くと、すべての行がそこにあることがわかります。ここで
コードは次のとおりです。
file = open("ob_input.csv")
outfile = open("ob_output.csv", "w")
outfile.write("COLUMNS\n")
print "\n*************** Adding Date Column ***************"
date = time.strftime("%m/%d/%Y %H:%M:%S,")
i1 = 0
for line in file:
i1 = i1 + 1
if "Asset ID,CI Type" in line:
pass
else:
newline = date + line
outfile.write(newline)
file.close()
outfile.close()
time.sleep(2)
print "Done! Total lines: %d" % i1
print "\n**************** Changing Encoding ***************"
sourceEncoding = "utf-8"
targetEncoding = "utf-8-sig"
source = open("ob_output.csv")
target = open("ob_finle.csv", "w")
target.write(unicode(source.read(), sourceEncoding).encode(targetEncoding))
i2 = sum(1 for line in open('ob_finle.csv'))
print "Done! Total lines: %d" % i2
私が手出力は次のようになります。
*************** Adding Date Column ***************
Done! Total lines: 9741
**************** Changing Encoding ***************
Done! Total lines: 9729
9741が正しいです。エンコーディングの変更後にファイルを開くと、9741行になります。なぜそれが少ないのか分かりません。
私がやっていることは、ファイルを変更した後にデータを見逃さないようにすることです。
"open"を使用すると、 "outfile.write(newline)"という行にこのエラーが発生します。 'ascii'コーデックでは、位置10の文字をエンコードできません9-110:序数が範囲内にない(128) –
申し訳ありませんが、私は少しPythonに少し新しいです。 –
Ok。 Python 2.'u'mystring''では、すべての文字列をUnicodeにする必要があります。 –