मैं एक समस्या को हल करने की कोशिश कर रहा हूं जो कहता है, 1 को स्ट्रिंग के अंत में जोड़ने के लिए। जिसका मतलब है:

1.abcd12 बन जाएगा: abcd13

2.abcd099 abcd100 बन जाएगा

3.abcd01 abcd02 बन जाएगा

4.ddh^add@2204 ddh^add@2205 बन जाएगा

मेरा कोड:

import re
def increment_string(strng):
    regex = re.compile(r'[0-9]')
    match = regex.findall(strng)
    
    nums = ''.join(match[-3:])
    
    add = int(nums)+1
    print(strng+str(add))
increment_string("abcd99")

कोड मुझे यह आउटपुट देता है: abcd099100 और मुझे नहीं पता कि इसे कैसे हल किया जाए:

3
Ayush Kumar 1 नवम्बर 2020, 16:51

2 जवाब

सबसे बढ़िया उत्तर

स्ट्रिंग के अंत में सभी अंकों का मिलान [0-9]+$ से करें और re.sub का उपयोग कॉल करने योग्य प्रतिस्थापन तर्क के रूप में करें:

import re
def increment_string(strng):
    return re.sub(r'[0-9]+$', lambda x: f"{str(int(x.group())+1).zfill(len(x.group()))}", strng)

print(increment_string("abcd99"))
# => abcd100
print(increment_string("abcd099"))
# => abcd100
print(increment_string("abcd001"))
# => abcd002

पायथन डेमो देखें

1
Wiktor Stribiżew 3 नवम्बर 2020, 16:35

पुराने नंबर को '' से बदलें:

import re


def increment_string(strng):
    regex = re.compile(r'[0-9]')
    match = regex.findall(strng)

    nums = ''.join(match[-3:])
    strng = strng.replace(nums, '')
    add = int(nums) + 1

    print(strng + str(add))


increment_string("abcd99")

आउटपुट:

abcd100
1
Sushil 1 नवम्बर 2020, 16:56