2017-03-29 59 views
-1

我想將字符串拆分爲單獨的字符串,並將每個字符串保存在一個新變量中。這就是用例:'17899792270101010000000000', '17899792270102010000000000', '17899792270103010000000000'將正則表達式結果保存在變量中

  • 現在我想每個號碼 - ,只是數量在一個變量:與BC1 = input("BC1: ")按以下格式

    • 用戶直接輸入

      a = 17899792270101010000000000 
      b = 17899792270102010000000000 
      c = 17899792270103010000000000 
      

    如何在python 3中實現?

    很遺憾,我無法爲它創建合適的正則表達式,也無法將字符串部分保存在單獨的變量中。我希望有人能幫助我。 已經提前致謝!

  • +1

    你會說這是一個csv格式嗎?如果是這樣,爲什麼不使用csv模塊? –

    +0

    看看re.match - 它返回正則表達式的匹配部分,通過在零件周圍放置()來指定。 – barny

    +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' 
    

    編輯: 如果你想intstr,你可以map(int, matches)

    +0

    非常感謝!我會根據我的需要調整該解決方案。 – Helle

    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 
    
    0

    如果我正確理解你的意思,這應該可以做到這一點

    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對不同的輸入格式更健壯。

    +0

    非常感謝您的努力,這與我剛纔提到的情況完全吻合。 我也會檢查Foryah的答案。 – Helle