【问题标题】:Sum of string with positive and negative integers正负整数字符串之和
【发布时间】:2020-04-02 17:18:59
【问题描述】:

我有一个字符串,例如“12-569-8”,想将它拆分成一个负整数和正整数列表,这样我就可以将它们加在一起——例如

list = ['1', '2', '-5', '6', '9', '-8']

总和为 5。我主要是在拆分列表时遇到困难。

【问题讨论】:

  • 请发布给您带来麻烦的代码。这不是编码或教程服务。 “我大部分时间都在挣扎”不是一个充分的问题规范。
  • 也就是说,要么查看如何使用正则表达式处理整数,要么......将字符串分解为单个字符。浏览该列表,转换单个数字。当你点击一个减号时,你知道下一个数字必须被否定。
  • 答案有帮助吗?不要忘记您可以投票并接受答案。见What should I do when someone answers my question?,谢谢!

标签: python list split integer


【解决方案1】:

一种可能的方法是使用正则表达式,并匹配数字或前面有负号的数字:

s = "12-569-8"
import re

sum(map(int,re.findall(r'(\d|-\d)', s)))
# 5

正如 cmets 中 prune 所提到的,另一种方法是循环遍历字符并根据您找到的内容进行加减:

res = 0
i=0
while i < len(s):
    x = s[i]
    if x != '-':
        res += int(x)
    else:
        i += 1
        res -= int(s[i])
    i += 1

print(res)
# 5

【讨论】:

    【解决方案2】:

    如果不想使用导入,可以用空格分隔所有字符,并去掉减号后的空格。然后用空格分割字符串,每个数字都会被正确解释:

    s = "12-569-8"
    c = " ".join(s).replace("- ","-") # space out, remove space after minus
    n = list(map(int,c.split()))      # split and convert to integers 
    
    print(c) # '1 2 -5 6 9 -8'
    print(n) # [1, 2, -5, 6, 9, -8]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 2012-08-06
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      相关资源
      最近更新 更多