I’m trying to replace every multiline import inside a Python source file.. So, the source goes like
from XXX import ( AAA, BBB, ) from YYY import ( CCC, DDD, EEE, ... ) ...other instructions...
and I’d like to get something like
from XXX import AAA, BBB from YYY import CCC, DDD, EEE, ... ...other instructions...
I tried to use sed but it looks like it doesn’t support non-greedy matching of the closing parenthesis, so it “eats” the second import.. 🙁
Any hint? Is this impossible with sed? Should I try with another tool?
Advertisement
Answer
Ummm… what’s wrong with Python?
lineIter= iter(aFile) for aLine in lineIter: if aLine.startswith("import"): if aLine.endswith("("): for aModule in lineIter: if aModule.endwith(")"): break print "import", aModule.strip() else: print aLine.stri() else: print aLine.strip()