यदि किसी संख्या के बाद स्ट्रिंग में "(" आता है:
मैं इसे नंबर से कैसे बदलूं*(

उदाहरण: इनपुट:"2(3+4)"
आउटपुट: "2*(3+4)"

-4
Aman Kumar 18 सितंबर 2020, 22:44

3 जवाब

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

यह सुनिश्चित करने के लिए कि आप केवल अंकों के बाद प्रतिस्थापित करते हैं, आप इस तरह से स्ट्रिंग पर लूप कर सकते हैं:

input = "2(3(8(12))+4)"

output = input
indices_to_insert = []
for i in range(len(input)-1):
    if input[i].isdigit() and input[i+1] == '(':
        indices_to_insert.append(i)
for iter,index in enumerate(indices_to_insert):
    output = output[:index+iter+1] + "*" + output[index+iter+1:]
print(output)

आउटपुट:

2*(3*(8*(12))+4)

आप रेगेक्स का भी उपयोग कर सकते हैं

3
Yossi Levi 18 सितंबर 2020, 23:28

आप नियमित अभिव्यक्ति प्रतिस्थापन का भी उपयोग कर सकते हैं:

import re

s = '2(3+4)'
s = re.sub(r'(\d+)\(', r'\1*(', s)
print(s)

प्रिंट:

2*(3+4)

रेगेक्स डेमो और स्पष्टीकरण

0
Booboo 18 सितंबर 2020, 23:37

या आप थोड़ा छोटा कोड आज़मा सकते हैं जो re का उपयोग करता है

import re

s = '12(3+4)+5(4+1)-3(2(6/(1+1)))'
for m in re.findall('(\d+)(\()', s):
    s = s.replace(''.join(m), '*'.join(m))
print(s)

'12*(3+4)+5*(4+1)-3*(2*(6/(1+1)))'
0
Łukasz 18 सितंबर 2020, 23:54