(Sep-08-2019, 06:17 PM)Skaperen Wrote: i was expecting some existing function that just does it.Yes with your none exciting effort,you should except that
Skaperen Wrote:i like that in_place module. too bad i can't assume every python installation has it. and i wish they would quit naming things with CamelCase.There is a option in standard library fileinput with
inplace=True
,but it not so nice to use,in-place module dos it better and are simpler to use.As mention all code is there,here taken out.
import re import in_place def tab_space(text, tabs=8): result = '' for c in text: if c == '\t': result += ' ' while len(result) % tabs != 0: result += ' ' else: result += c return result def tab_even(file, space=4): with in_place.InPlace(file) as f: text = f.read() result = re.sub(r'\s\s+|\t', ' '*space, text) f.write(result) if __name__ == '__main__': #--- Tab space ---# file = 'file_1.txt' tabs = 4 with in_place.InPlace(file) as f_out: for line in f_out: line = tab_space(line, tabs) f_out.write(line) #--- Even Space ---# #file = 'file_1.txt' #tab_even(file, space=8)Test file
file_1.txt
.Output:One Two Three Four Five six seven
One Two Three Four Five six seven
One Two Three Four Five six seven