Найти и удалить вызов функции в скобках - PullRequest
2 голосов
/ 17 мая 2019

Я работаю над сценарием Python, который позволит мне удалить некоторые атрибуты из вызова функции в классе Java.Проблема в том, что я не могу найти правильное регулярное выражение, включающее как имя атрибута, так и квадратные скобки.

Строка, которую я хочу удалить, является, например, 'withContentDescription ("random text")) '

Как правильно включить скобки () и произвольное содержимое в мой код?import re

filein = '/path/file.java'
fileout = '/path/newfile.java'

f = open(filein,'r')
filedata = f.read()
f.close()

print("Removing Content Descriptor")
newdata = filedata.strip("withContentDescription\)")

f = open(fileout,'w')
f.write(newdata)
print("--- Done")
f.close()

Я хотел бы получить что-то вроде

old string: allOf(withId(someinfo), withContentDescription("Text"))
new string:  allOf(withId(someinfo)) 

1 Ответ

0 голосов
/ 17 мая 2019

Использование re.sub

Пример:

import re

s = 'allOf(withId(someinfo), withContentDescription("Text"))'
print(re.sub(r",\s*(withContentDescription\(.*?\))", "", s))

Выход:

allOf(withId(someinfo))
...