【问题标题】:Python split on comma without parenthesisPython在没有括号的逗号上拆分
【发布时间】:2018-09-12 13:58:30
【问题描述】:

我有一个关于 Python 语法的问题。

在解析字符串并将其转换为浮点数时,我遇到了一个问题。

我有密码

print "Please enter in x1 and y1 separated by a comma"
in1 = input()
sp1 = str(in1).split(',')

x1 = sp1[0]

如果我进入

5.4,3.2

打印出 x1,我得到了

(5.4

这个额外的括号使我很难转换为浮点数以进行进一步计算。 但是,如果我根据小数拆分,例如

print "Please enter in x1 and y1 separated by a comma"
    in1 = input()
    sp1 = str(in1).split('.')

我可以将 x1 打印为

5

我没有得到好的括号,但是我也没有得到正确的数字。

任何帮助将不胜感激,谢谢

【问题讨论】:

  • 我按照您的步骤操作,无法重现该问题。输入5.4,3.2时,在,处拆分字符串并将第一部分分配给x1,x1对我来说是5.4(Python 3.6)
  • 正如这里提到的input() 评估您作为 Python 代码输入的内容,然后由于逗号而认为它是一个元组。使用raw_input()stackoverflow.com/a/4960216/102315
  • 有什么理由要先转换为str,然后再提取号码? Python 已经为你完成了,所以你可以这样做 x1, y1 = in1

标签: python split


【解决方案1】:

看起来当在输入中用逗号提交一个值时,你会得到一个元组。而不是将其转换为字符串并拆分它直接使用索引访问元素。

例如:

print "Please enter in x1 and y1 separated by a comma"
sp1 = input()
print sp1, type(sp1)
x1 = sp1[0]
print x1

输出:

(5.4, 3.2) <type 'tuple'>
5.4

【讨论】:

    【解决方案2】:

    您可以这样做:

    print ("Please enter in x1 and y1 separated by a comma : ")
    in1 = input()
    sp1 =" ".join(str(in1).split(','))
    print(sp1)
    

    输入

    1.1,1.2

    输出

    1.1 1.2

    【讨论】:

      【解决方案3】:

      问题似乎是input() 计算表达式并返回任何被计算的值。 5.4,3.2 似乎被评估为一个元组。

      解决方案是改用raw_input(),它只会将输入的文本作为字符串返回。或者,如果可能的话,使用 Python 3,它将 input() 更改为 raw_input() 对 Python 2 所做的事情。

      【讨论】:

      • 这个解释太棒了
      • 这似乎做到了!非常感谢
      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 2017-08-24
      • 2013-09-24
      相关资源
      最近更新 更多