0

csv ファイルを mysql にロードしようとしましたが、csv の最後のフィールドでデータが切り捨てられたという警告が引き続き表示されます。

データは Python で準備され、最後のフィールドの文字列の長さが 13 (CREATE TABLE で宣言されたフィールドの長さ) であることを確認します。

cleanField( row[ 17 ] )[0:12]

どの方法で測定しても、13 です。mysql 警告の行の 1 つであるlen(cleanField( row[ 17 ] )[0:12])を使用して出力すると、まだ 13 文字の文字列が表示されます。$ cat customer.csv | awk -F"," '(NR==3621789){ print $17 }'

しかし、次のことを試してみると、隠れたキャラクターのヒントがあるようです。何かアドバイス?ありがとう。

$ cat customer.csv | awk -F"," '(NR==3621789){ print "<" $17 ">" }'
>PRSP_CATS_CO

ここにクリーンフィールドがあります:

def cleanField(x):
    x = re.sub( ' +' , ' ' , x )
    try:
        x.decode('ascii')
    except UnicodeDecodeError:
        x = unicode( x , "UTF-8")
        x = unicodedata.normalize('NFKD', x ).encode('ascii', 'ignore')
    else:
        pass
    # " ".join(x.split())
    return x.replace(',','').replace('"','').replace("'",'').replace('\t','').replace('\n','').replace('\\','').replace('\s','')
4

1 に答える 1

1

string[0:12] は常に 12 文字にする必要があります。おそらく、pudb などを使用してプログラムをステップ実行する方がよいでしょう。

dstromberg@zareason ~ $ /usr/local/pypy-1.9/bin/pypy
Python 2.7.2 (341e1e3821ff, Jun 07 2012, 15:40:31)
[PyPy 1.9.0 with GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
And now for something completely different: ``how to construct the blackhole
interpreter: we reuse the tracing one, add lots of ifs and pray''
>>>> print '01234567890123456789'[0:12]
012345678901
>>>> print(len('01234567890123456789'[0:12]))
12
>>>>
于 2013-04-30T00:35:11.480 に答える