Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python命令行参数中拒绝UTF-8减号_Python_Ruby On Rails_Ubuntu_Command Line_Argparse - Fatal编程技术网

python命令行参数中拒绝UTF-8减号

python命令行参数中拒绝UTF-8减号,python,ruby-on-rails,ubuntu,command-line,argparse,Python,Ruby On Rails,Ubuntu,Command Line,Argparse,我在UbuntuLucent上运行Python2.6,并且很难正确解释负命令行参数中的负号,特别是当通过Rails(使用反引号)通过操作系统启动对脚本的调用时。特别是,负号看起来是UTF-8 手动解释命令行参数时,如中所示: lng = float(sys.argv[4]) 它会触发错误: ValueError: invalid literal for float(): ‐122.768 sC.py: error: argument --coords: invalid float value

我在UbuntuLucent上运行Python2.6,并且很难正确解释负命令行参数中的负号,特别是当通过Rails(使用反引号)通过操作系统启动对脚本的调用时。特别是,负号看起来是UTF-8

手动解释命令行参数时,如中所示:

lng = float(sys.argv[4])
它会触发错误:

ValueError: invalid literal for float(): ‐122.768
sC.py: error: argument --coords: invalid float value: '\xe2\x80\x90122.76838'
作为一名黑客,我可以通过匹配前三个字节“\xe2”、“\x80”和“\x90”来解决这个问题,并用我自己的负号替换它们

通过argparse(1.2.1版)解释命令行参数时,如:

它会触发错误:

ValueError: invalid literal for float(): ‐122.768
sC.py: error: argument --coords: invalid float value: '\xe2\x80\x90122.76838'

任何帮助都将不胜感激

您可能需要使用hack并告诉argparse需要一个字符串


就Python而言,您的系统与RoR之间没有任何关联。如果你想解决这个问题(而不是破解它),你必须找到rails代码,看看它从哪里得到数据。在这个过程中,奇特的输出非常重要。

您可能需要使用hack并告诉argparse需要一个字符串


就Python而言,您的系统与RoR之间没有任何关联。如果你想解决这个问题(而不是破解它),你必须找到rails代码,看看它从哪里得到数据。在这一过程中,奇特的输出非常重要。

您的输入数据包含的Unicode字符不是标准的ascii连字符

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'
-122.76838
虽然它们在打印时看起来可能相同,但实际上并非如此。限制或清理输入

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

'HYPHEN'
'HYPHEN-MINUS'
-122.76838

输入数据包含的Unicode字符不是标准ascii连字符

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'
-122.76838
虽然它们在打印时看起来可能相同,但实际上并非如此。限制或清理输入

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

'HYPHEN'
'HYPHEN-MINUS'
-122.76838

你是如何将减号输入到你的Ruby代码中的?也许可以使用一个工作正常的编辑器?你到底是如何将减号输入到你的Ruby代码中的?使用一个能正常工作的编辑器,也许吧?谢谢,这是一个比我更干净的替代方法。不过,如果没有必要的话,我还是更愿意。谢谢,这是一种比我更干净的替代方法。尽管如此,如果没有必要的话,我还是更愿意这样做。我不熟悉“花式输出”,也不确定我们是否在使用它,但我会研究它。目前,我告诉argparse需要一个字符串。某些软件——通常是博客——会把两个破折号变成一个长破折号。对于最终用户来说,它看起来不错,但程序通常不知道如何处理它。我不熟悉“奇特的输出”,也不确定我们是否在使用它,但我会研究它。目前,我告诉argparse需要一个字符串。某些软件——通常是博客——会把两个破折号变成一个长破折号。对于最终用户来说,它看起来不错,但程序通常不知道如何处理它。