将正则表达式结果保存在变量

时间:2017-03-29 13:25:15

标签: python string python-3.x variables

我想将一个字符串拆分成单独的单个字符串,并将每个字符串保存在一个新变量中。这就是用例:

  • 使用BC1 = input("BC1: ")以下列格式直接输入用户:'17899792270101010000000000', '17899792270102010000000000', '17899792270103010000000000'

  • 现在我想要每个数字 - 只需要一个变量中的数字:

    a = 17899792270101010000000000
    b = 17899792270102010000000000
    c = 17899792270103010000000000
    

如何在python 3中实现?

遗憾的是,我无法为它创建合适的正则表达式,也无法将字符串部分保存在单独的变量中。我希望你们中的某个人可以帮助我。 提前谢谢!

3 个答案:

答案 0 :(得分:1)

查看re

import re

input = "'17899792270101010000000000', '17899792270102010000000000', '17899792270103010000000000'"

 matches = re.findall('(\d+)', input)
 # matches = ['17899792270101010000000000', '17899792270102010000000000', '17899792270103010000000000']

 a, b, c = re.findall('(\d+)', input)
 # a = '17899792270101010000000000'
 # b = '17899792270102010000000000'
 # c = '17899792270103010000000000'

编辑: 如果您希望int不是str,则可以map(int, matches)

答案 1 :(得分:1)

如果我理解正确,这应该可以解决问题

BC1 = input("BC1: ")
numbers = [int(x.strip(' \'')) for x in BC1.split(',')]

现在你想要的数字是

numbers[0] == a # 17899792270101010000000000
numbers[1] == b # 17899792270102010000000000
numbers[2] == c # 17899792270103010000000000
  • split函数会创建一个数字数组,但包含空格和引号。

    ["'17899792270101010000000000'", " '17899792270102010000000000'", " '17899792270103010000000000'"]

  • strip函数删除了空格和引号

    ['17899792270101010000000000', '17899792270102010000000000', '17899792270103010000000000']

  • int函数将字符串解析为整数(数字)

    [17899792270101010000000000, 17899792270102010000000000, 17899792270103010000000000]

但是,这要求用户遵循您指定的格式。 Foryah's answer对不同的输入格式更加健壮。

答案 2 :(得分:0)

如果已经"格式"在输入端:

>>> BC1 = input("BC1: ")
BC1: '17899792270101010000000000', '17899792270102010000000000', '17899792270103010000000000'
>>> a=int(BC1[0])
>>> b=int(BC1[1])
>>> c=int(BC1[2])
>>> a
17899792270101010000000000
>>> b
17899792270102010000000000
>>> c
17899792270103010000000000