Below is the python block code,
def compute_hcf(x, y): while(y): x, y = y, x % y return xwhich I wanted to convert into single line like below,
def compute_hcf(x, y):\n\t while(y): \n\t\t x, y = y, x % y \n\t return xI've the below approach to solve this,
def convert(fname): newLines = '' with open(fname, 'r') as f: for line in f: num_spaces = 0 for letter in line: if letter != ' ': break num_spaces += 1 if num_spaces == 3: line = line.replace(' '*3, '\\t') #If number of Spaces is 3, replace with a single tab elif num_spaces == 4: line = line.replace(' '*4, '\\t') #If number of Spaces is 4, replace with a single tab elif num_spaces == 7: line = line.replace(' ' *7, '\\t\\t') #If number of Spaces is 7, replace with double tab elif num_spaces == 8: line = line.replace(' ' * 8, '\\t\\t') #If number of Spaces is 8, replace with double tab line = line + '\\n' #Adding new line at the end of the line newLines = newLines + line converted = ''.join(newLines) print(converted)
convert('fileWithInputContent.txt')Actual Output:
def compute_hcf(x, y):
\n\twhile(y):
\n\t\tx, y = y, x % y
\n\treturn x\nExpected Output:
def compute_hcf(x, y):\n\t while(y): \n\t\t x, y = y, x % y \n\t return x 3 1 Answer
When you read text from a file in python, there is automatically a newline character added to the end of each line. So when we print out the strings that python reads it looks like this.
image showing that there is a newline character at the end of the string
This is why the actual output has newlines. So in order to fix this, we just need to remove the newline character with something like this.
if '\n' in line: line = line.replace('\n', '')The code with this addition looks like this.
def convert(fname):
newLines = ''
with open(fname, 'r') as f: for line in f: # print each string # print(repr(line)) if '\n' in line: line = line.replace('\n', '') num_spaces = 0 for letter in line: if letter != ' ': break num_spaces += 1 if num_spaces == 3: line = line.replace(' '*3, '\\t') #If number of Spaces is 3, replace with a single tab elif num_spaces == 4: line = line.replace(' '*4, '\\t') #If number of Spaces is 4, replace with a single tab elif num_spaces == 7: line = line.replace(' ' *7, '\\t\\t') #If number of Spaces is 7, replace with double tab elif num_spaces == 8: line = line.replace(' ' * 8, '\\t\\t') #If number of Spaces is 8, replace with double tab line = line + '\\n' #Adding new line at the end of the line newLines = newLines + line
converted = ''.join(newLines)
print(converted)And it works!
def compute_hcf(x, y):\n\twhile(y):\n\t\tx, y = y, x % y\n\treturn x\n