How to format txt file in Python

python write to text file
python read text file line by line
python write output to text file
python read text file into string
python edit text file
read text file and write to excel in python
python parse text file
python create text file in directory

I am trying to convert a txt file into a csv file in Python. The current format of the txt file are several strings separated by spaces. I would like to write each string into one cell in the csv file.

The txt file has got following structure:

UserID Desktop Display (Version) (Server/Port handle), Date

UserID Desktop Display (Version) (Server/Port handle), Date


My approach would be following:

with open('licfile.txt', "r+") as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line.split(" ") for line in stripped if line)

with open('licfile.csv', 'w') as out_file:
    writer = csv.writer(out_file)
    writer.writerow(('user', 'desktop', 'display', 'version', 'server', 'handle', 'date'))

Unfortunately this is not working as expected. I do get following ValueError: I/O operation on closed file. Additionally only the intended row headers are shown in one cell in the csv file.

Any tips on how to proceed? Many thanks in advance.

You can also use the built in csv module to accomplish this easily:

import csv

with open('licfile.txt', 'r') as in_file, open('licfile.csv', 'w') as out_file:
    reader = csv.reader(in_file, delimiter=" ")  
    writer = csv.writer(out_file, lineterminator='\n')

I used lineterminator='\n' argument here as the default is \r\n and it ends up giving you an extra line of return per row in most cases.

There are also a few arguments you could use if say quoting is needed or a different delimiter is desired:

7. Input and Output, (A third way is using the write() method of file objects; the standard output file can be The str.format() method of strings requires more manual effort. This behind-the-scenes modification to file data is fine for text files, but will corrupt binary  This tutorial went over several ways to format text in Python 3 through working with strings. By using techniques such as escape characters or raw strings, we are able to ensure that the strings of our program are rendered correctly on-screen so that the end user is able to easily read all of the output text.

how about

with open('licfile.txt', 'r') as in_file, open('licfile.csv', 'w') as out_file:
    for line in in_file:
        if line.strip():
            out_file.write(line.strip().replace(' ', ',') + '\n')

and for the german Excel enthusiasts...

            ... .replace(' ', ';') + '\n')


Working with Text Files in Python, How to format the ieee oui.txt file into a more usable dictionary using our favorite programming Duration: 9:23 Posted: 23 May 2015 Reading and Writing to text files in Python. Read Only (‘r’) : Open text file for reading. The handle is positioned at the beginning of the file. If the file does not exists, raises I/O Read and Write (‘r+’) : Open the file for reading and writing. The handle is positioned at the beginning of

You are using comprehension with round brackets which will cause to create tuple object. Instead of that just use square bracket which will return list. see below example:

stripped = [line.strip() for line in in_file]
lines = [line.split(" ") for line in stripped if line]

Formatting Files Using Python, File handle is like a cursor, which defines from where the data has to be read or written in the file. There are 6 access modes in python. Read Only ('r') : Open text​  text = open("text.txt", "r").readlines() print(text) Then to implement the solutions some good people have shared. I cant use their codes since the file I have now is different from the one I posted (I wish to try out this new example). How can I arrange the list according to similar item in certain location

licfile_df = pd.read_csv('licfile.txt',sep=",", header=None)

Reading and Writing to text files in Python, How do you write to a text file in Python? I am trying to have a converter that can convert any file of any format to text, so that processing becomes easier to me. I have used the Python textract library. Here is the documentation: https://

String Formatting - Learn Python, string, which contains normal text together with "argument specifiers", special symbols like "%s" and "%d". file = open(“testfile.txt”,”w”) file.write(“Hello World”) file.write(“This is our new text file”) file.write(“and this is another line.”) file.write(“Why? Because we can.”) file.close() Naturally, if you open the text file – or look at it – using Python you will see only the text we told the interpreter to add.

Reading and Writing Files in Python (Guide) – Real Python, This data is organized in a specific format and can be anything as simple as a text file or as complicated as a program executable. In the end, these byte files are  For example, the below snippet prints to the file output.txt. print('Hi', file=open('output.txt', 'a'))print('Hello from AskPython', file=open('output.txt', 'a'))print('exit', file=open('output.txt', 'a')) The file now has the three lines appended to it, and we have successfully printed to output.txt!

How To Handle Plain Text Files in Python 3, This tutorial will focus on the txt file format. Step 1 — Creating a Text File. Before we can begin working in Python, we need to make sure we have  We begin by telling Python where the file is. The location of your file is often referred to as the file path. In order for Python to open your file, it requires the path. The path to our days.txt file is: /users/sammy/days.txt. In Python, we will create a string variable to store this information.

  • can you add an input and an expected output example please?
  • You should include the input and output of the script (or some part of it).
  • Just use read_lines = in_file.readlines() before stripped = (line.strip() for line in in_file) to read the lines in the buffer before iterating over them. Otherwise, the logic of the code seems good enough.
  • Thanks for the hint. This solution at least writes the data into the csv but unfortunately writes everything into one column, I would like to separate each record from the others.
  • What do you understand by column? It puts commas inbetween all entries where were spaces before. If you define column by what-is-put-in-different-columns-when-I-load-that-csv-with-Excel then you should have a look what Excel uses as column separator. You're in Germany? Try ;...
  • Yes (not only, but also) in Germany the standard decimal sign is a comma, which is unfortunately exactly the same character which is used as a column separator in - well, comma separated value -files. Therefore the column separator is here a semicolon. This is part of the locale preferences topic with software in general.
  • You guessed right, thanks for the explanation. Now if I have got several rows in the txt file with equivalent columns, can I simply add that after every date a new row shall be started?
  • Problem solved, thank you @SpghttCd :)
  • No sorry, but this is simply wrong. round brackets with a for-expression result in a generator, not in a tuple. and even though OP probably did that by accident, this is imo not the problem here...
  • @shaikmoeed I think there's some misunderstanding - spaces are the separators in the source file. Target file should be a csv, which by standard is generally comma separated. AFAIU this is in fact the main conversion which the whole post is about...
  • using pandas it is so easy to convert text file into DataFrame and sep="," is for if your text file is seprated by comma , It varies according to your text file.
  • Yes, correct it's easy from usability point of view. But on the one handside it might be a little too heavy library for a simple task like this and then this post is simply not tagged with pandas...