You might want to convert a really long string in a single line into multiple lines with specified width. For example, if you have string like
12345678912345678912345678912345678912345678910
and want to split the long text to multi-line text, where each line is of length w, like w=9
123456789
123456789
123456789
123456789
123456789
10
In the above example, each line has been formatted to have width of w=9 and the last line has the remaining text. One immediate application of a solution to this problem is in formating a chromosome long genome sequence into multi-line output format like FASTA.
Here are two ways to fold a long line; one using a few lines of Python code, and the other using a simple Linux command on terminal.
Python Code to Convert a Long Single Line to Multi-Line Text
def fold_W(line, w, ofile): """ Fold a long line to multiple lines with width w (int) Input: a long line of text Input: line width Output: file with multi-line output """ out = open(ofile, "w") line = line.rstrip() start=0 # get the length of long line line_length = len(line) # loop through the long line using the desired line # width while line_length - start >= w: print >>out, line[start:start+w] start += w # The rest of the line that does not completely # use a line of length w print >>out, line[start:]
Linux Command to Convert a Long Single Line to Multi-Line Text
Although the above multi-line code to convert a single line code works fine, there is elegant solution from a Linux command. The Linux command that does the job neatly in a single line is “fold”. If the long line is in a file named “longLine.txt”, one can split into multi-line text by using “fold” command as
fold -w 9 longLine.txt
where the -w option specifies the line width for the multi-line output.