Мне нужно регулярное выражение, которое сохраняет одно или несколько ведущих знаков подчеркивания

import re 
function_name=[]
def function_renamer(code):
  functions= re.findall(r'def\s+[\w.-]+', code)
  for x in functions:
   x= x.replace('_','')
  print(x)

function_renamer('def _add_two_numbers(a, b)')

Это возвращается

def addtwonumbers   

Но мне нужно _addtwonumbers

0
jeff 14 Янв 2021 в 12:31

2 ответа

Лучший ответ

Вы можете использовать re немного по-другому, используя re.sub вместо replace. Таким образом вы можете заменить все _ < sizes, кроме первого:

 import re

def function_renamer(code):
    functions = re.findall(r'def\s+[\w.-]+', code)
    for x in functions:
        x = re.sub(r'(\w)_', '\g<1>', x)
        print(x)

function_renamer('def _add_two_numbers(a, b) def a_d_d(a, b)')

Это напечатает:

def _addtwonumbers
def add
1
Tomerikoo 14 Янв 2021 в 09:43
def function_renamer(code):
    code = code.replace(" ", "!")
    code = code.replace("_", " ")
    code = str(code.replace(code.split(" ")[1], "_" + code.split(" ")[1]))
    code = code.replace(" ", "")
    code = code.replace("!", " ")
    print(code)

Это будет работать для ('def _sub_two_numbers(a, b) и 'def _add_two_numbers(a, b)'

0
זיו שיאון 14 Янв 2021 в 10:11
65716444