当前位置: 首页 > 面试题库 >

我的python将减号与破折号混淆

陶璞
2023-03-14
问题内容

我正在尝试使用 “ python get_timestamp.py -f gsham_input.xvg -1 -0.1348 -2 -0.1109”
运行以下python 。但是,似乎python错误地将小数点前的减号加了破折号,并显示了以下错误:“ file”
get_timestamp.py“,第21行,在value1 =
float(arg)ValueError中:float()的无效文字:−0.1348“您能帮助我知道如何解决吗?

谢谢。

#!/usr/bin/env python

"""
Given two values, looks in a 3 column-file (output of sham.pl)
which time frame matches closest.
"""

import sys

USAGE = "USAGE: get_timestamp.py -f <sham output> -1 <value 1> -2 <value 2>\n"

# Parse arguments
read_input, read_value1, read_value2 = False, False, False
input_file, value1, value2 = None, None, None
for arg in sys.argv[1:]:
    if read_input:
        read_input = False
        input_file = arg
    elif read_value1:
        read_value1 = False
        value1 = float(arg)
    elif read_value2:
        read_value2 = False
        value2 = float(arg)
    if arg[0] == "-":
        if arg == "-f":
            read_input = True
            continue
        elif arg == "-1":
            read_value1 = True
            continue
        elif arg == "-2":
            read_value2 = True
        else:
            print USAGE
            sys.stderr.write('ERROR: Option not recognized: %s\n' %arg)
            sys.exit(1)

if not input_file:
    print USAGE
    sys.stderr.write('ERROR: You forgot to provide an input file.\n')
    sys.exit(1)

# Open sham output
x_values, y_values, time_values = [], [], []
fhandle = open(input_file)
for line in fhandle:
    if line[0] != "#" and len(line.split()) == 3:
        t,x,y = line.split()
        x_values.append(float(x))
        y_values.append(float(y))
        time_values.append(float(t))
fhandle.close()

def find_common_frame(min_x, min_y):
    for xval in min_x:
        xframe = xval[0]
        for yval in min_y:
            yframe = yval[0]
            if xframe == yframe:
                return (xframe, xval[1], yval[1])
    return (None, None, None)

# If you cannot find anything, try increasing the nval variable
nval = 50
min_x = sorted(enumerate(x_values), key=lambda x: abs(x[1]-value1))[:nval]
min_y = sorted(enumerate(y_values), key=lambda x: abs(x[1]-value2))[:nval]

frame, x, y = find_common_frame(min_x, min_y)

if not frame:
    print "No timestamp found.."
    sys.exit(0)
print "## T = %s (%s, %s)" %(time_values[frame], x, y)

问题答案:

这不是Python问题,您传递的浮点数以减号(,unicode
U + 2212)开头,而不是常规的连字符-减号(-unicode U +
002D,Python和大多数语言使用的符号为“减号”标志)。我猜这是因为您从某个文档中复制了数字,因为很难用键盘键入Unicode减号。

一种简单的解决方案是,当您在命令行中调用程序时,用常规的连字符替换这些符号。如果您 确实
需要编程来处理这些符号,则可以使用如下函数来解析数字,而不是调用float

def float_unicode(arg_str):
    return float(arg_str.decode("utf8").replace(u"\u2212", "-"))

但是,我不建议这样做,因为它会使程序更加复杂,并且大多数使用数字的命令行工具都不支持此功能,因此用户通常不希望您的程序这样做。



 类似资料:
  • 我必须拆分一个包含破折号和减号的字符串。我试图根据unicode字符进行拆分(https://en.wikipedia.org/wiki/Hyphen#Unicode),仍然考虑减号与破折号字符相同。我如何解决它? 预期产出 (国家) (美国) -1个 实际输出量 (国家) (美国) //实际上,这里会打印空行,但编辑器会压缩空行 1. 我想在字符串连接期间会发生一些转换,但不确定。欢迎任何解决这

  • 我的dash应用程序具有基于可用dash留档中找到的食谱的导航。它的工作原理,但它不好看。谁知道介绍菜单的更好方法?我不想开发一个特殊的流星组件,但我很乐意使用目前可用的框架之一(引导,语义学,...)。

  • 我试图将像“plex”或“emby”这样的实时代码转换与我的应用程序集成在一起。 我可以服务dash内容到shaka-player或dash.js,但只有在“现场模式”。但我想通过玩家来实现搜索。 我看了一下plex,为了启用这一点,他们创建了自己的mpd文件和持续时间,这样玩家就有了一个完整的搜索栏。 然而,当寻找时,玩家会要求一个段号,如:449。我需要停止ffmpeg并使用偏移量重新启动,但

  • 问题内容: 我开始学习一些JavaScript,并且了解在命名标识符时不允许使用破折号。但是,在CSS中,ID和类通常使用破折号。 在CSS中使用破折号是否会干扰javascript交互?例如,如果我要使用。我已经尝试了一些使用getElementByID并将破折号作为div ID的名称的示例,并且它可以工作,但是我不确定在所有其他情况下是否都是这种情况。 问题答案: 在ID(或类名,如果您选择的

  • 问题内容: 我希望这可以使某些使用破折号的样式的人免于头痛,尤其是因为引导程序变得如此流行。 我通过以下方式使用角度1.0.5 在ngClass文档中,该示例很简单,但还提到该表达式可以是类名到布尔值的映射。我试图在我的图标上使用“ icon-white”样式,如引导文档中所示,具体取决于布尔变量。 上面的行不起作用。当true为true 时,该类不附加。但是,如果将键更改为,则会成功将其添加到类

  • 可以设置文本样式,以便在出现换行符之前添加破折号。 示例: Lorem ipsum dolor坐在那里,奉献给我们,我们的工作和伟大的礼物。我们的服务,我们的服务-------------------------------------------------------- 我爱你,我爱你,我爱你,我爱你,我爱你,我爱你,我爱你,圣骑士-------------------------------