1

UbuntuLucentでpython2.6を実行していますが、特にスクリプトの呼び出しがRailsを介してOSから開始された場合(バッククォートを使用)、負のコマンドライン引数のマイナス記号を正しく解釈するのに問題があります。特に、マイナス記号はUTF-8として入ってくるようです。

コマンドライン引数が次のように手動で解釈される場合:

lng = float(sys.argv[4])

エラーが発生します:

ValueError: invalid literal for float(): ‐122.768

ハックとして、最初の3バイトを「\ xe2」、「\ x80」、および「\ x90」として照合し、それらを自分の負の符号に置き換えることで、これを回避できます。

コマンドライン引数がargparse(ver。1.2.1)を介して解釈される場合、次のようになります。

parser.add_argument('--coords', metavar='Coord', dest='coordinates', type=float, nargs=3, help='Latitude, Longitude, and Altitude')

エラーが発生します:

sC.py: error: argument --coords: invalid float value: '\xe2\x80\x90122.76838'

どんな助けでもいただければ幸いです!

4

2 に答える 2

3

入力データに、標準の ascii ハイフンではない Unicode 文字が含まれています。

import unicodedata as ud
data = '\xe2\x80\x90122.76838'
unicode_data = data.decode('utf8')
print repr(ud.name(unicode_data[0]))
print repr(ud.name(u'-')) # An ascii hyphen

出力:

'HYPHEN'
'HYPHEN-MINUS'

印刷すると同じに見えるかもしれませんが、そうではありません。入力を制限またはサニタイズします。

print float(unicode_data.replace(u'\N{HYPHEN}',u'-'))

出力:

-122.76838
于 2011-12-04T21:38:36.990 に答える
1
于 2011-12-04T20:44:11.023 に答える