【问题标题】:python remove leading negative sign in stringpython删除字符串中的前导负号
【发布时间】:2018-02-20 19:58:22
【问题描述】:

我想测试一个字符串是否有一个负前导字符,如果True,则删除该字符。

我试过了:

value_a = "-50.1342"
temp_a = value_a.split(".") #needed for other purposes
if temp_a[0].startswith('-'):
  del temp_a[0]

print temp_a

结果是一个空的 []。 可能是什么原因...?

【问题讨论】:

  • 无法重现。我得到['1342']
  • 您正在删除列表,这就是它为空的原因。尝试用''替换'-'
  • 您正在删除列表的整个第一个元素。我认为您打算执行del temp_a[0][0],但这会导致错误,因为字符串是不可变的。将该行改为temp_a[0] = temp_a[0][1:]More on python's slice notation.
  • 你有什么理由缩进 if 吗?
  • 你也可以temp_a = str(abs(float(value_a)))

标签: python string negative-number


【解决方案1】:

您有一个包含 1 个元素的 list,即字符串 "-50"

你想要做的是改变那个字符串,像这样:

temp_a[0] = temp_a[0].replace("-", '')

【讨论】:

  • 这个值需要重新分配。字符串是不可变的。
  • @ᴡʜᴀᴄᴋᴀᴍᴀᴅᴏᴏᴅʟᴇ3000 哎呀
【解决方案2】:

根据您的描述,这听起来可能就是您想要的。

value_a = "-50.1342"
temp_a = value_a.split(".") #needed for other purposes

if temp_a[0][0] == '-':
    temp_a[0] = temp_a[0][1:]

print temp_a

这给了我

['50', '1342']

【讨论】:

    【解决方案3】:

    输出为零,因为当您执行del temp_a[0] 时,您没有删除负数,而是删除了-50。因此,一旦您打印它,它就会为零。 这显示在 repl.it - https://repl.it/@RithvikKasarla/VapidExternalRuntimes

    要让它删除否定的尝试这样的事情。

    value_a = "-50.1342"
    temp_a = value_a.split(".") #needed for other purposes
    if temp_a[0].startswith('-'):
      temp_a[0] = str(int(temp_a[0])*-1)
    print temp_a
    

    这样做会使输出 ["50","1342"]

    【讨论】:

      【解决方案4】:

      试试这个:

      value_a = "-50.1342"
      value_a=value_a.replace("-",'')
      

      鉴于 value_a 是一个数字,这将删除它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-24
        • 1970-01-01
        • 2019-12-27
        • 1970-01-01
        • 1970-01-01
        • 2011-04-09
        • 2012-01-28
        • 1970-01-01
        相关资源
        最近更新 更多