I have multiple .txt
files in a directory.
Here is a sample of one of my .txt
files:
kkkkk;
select xx(\"xE\'\", PU
I would say my solution is not the optimised one, but it will solve your problem.
Solution (Just replace test.txt with your file name)
result = []
with open('test.txt','r') as fd:
# To keep track of '(' and ')' parentheses
parentheses_stack = []
# To keep track of complete word wrapped by ()
complete_word = []
# Iterate through each line in file
for words in fd.readlines():
# Iterate each character in a line
for char in list(words):
# Initialise the parentheses_stack when you find the first open '('
if char == '(':
parentheses_stack.append(char)
# Pop one open '(' from parentheses_stack when you find a ')'
if char == ')':
if not parentheses_stack = []:
parentheses_stack.pop()
if parentheses_stack == []:
complete_word.append(char)
# Collect characters in between the first '(' and last ')'
if not parentheses_stack == []:
complete_word.append(char)
else:
if not complete_word == []:
# Push the complete_word once you poped all '(' from parentheses_stack
result.append(''.join(complete_word))
complete_word = []
for res in result:
print(res)
Result:
WS:python rameshrv$ python3 /Users/rameshrv/Documents/python/test.py
("xE'", PUT(xx.xxxx.),"'")
("TRUuuuth")
(
SELECT abc AS abc1, abc_2_ AS efg, abc_fg, fkdkfj_vv, jjsflkl_ff, fjkdsf_jfkj
FROM &xxx..xxx_xxx_xxE
where ((xxx(xx_ix as format 'xxxx-xx') gff &jfjfsj_jfjfj.) and
(xxx(xx_ix as format 'xxxx-xx') lec &jgjsd_vnv.))
)
("xE'", PUT(xx.xxxx.),"'")
()
("CUuuiiiiuth")
(SELECT abc AS abc1, abc_2_ AS efg, abc_fg, fkdkfj_vv, jjsflkl_ff, fjkdsf_jfkj
FROM &xxx..xxx_xxx_xxE
where ((xxx(xx_ix as format 'xxxx-xx') gff &jfjfsj_jfjfj.) and
(xxx(xx_ix as format 'xxxx-xx') lec &jgjsd_vnv.))(( ))
)