Basic Challenge
π¬ Challenge: How to convert a CSV file to a text file in Python?
Hereβs the content of an example CSV file "my_file.csv"
used in our code snippet below:
Name,Job,Age,Income Alice,Programmer,23,110000 Bob,Executive,34,90000 Carl,Sales,45,50000
If you visualize this CSV in table form, it looks like this:
Name | Job | Age | Income |
---|---|---|---|
Alice | Programmer | 23 | 110000 |
Bob | Executive | 34 | 90000 |
Carl | Sales | 45 | 50000 |
The basic problem is to convert the CSV file "my_file.csv"
to a new TXT file "my_file.txt"
as is without changing its content
Name,Job,Age,Income Alice,Programmer,23,110000 Bob,Executive,34,90000 Carl,Sales,45,50000
We start with exploring this basic challenge and build from there by changing the delimiter and using Pandas to access individual columns.
But first things first: How to convert a CSV file to a TXT file without changing its contents?
Method 1: CSV to TXT Unchanged
If you want to keep the content (including the delimiter ','
) in the CSV file unmodified, the conversion is simple: read the .csv
file and write its content into a new .txt
file using the open()
, read()
, and write()
functions without importing any library.
In other words, perform the three steps to write a CSV to a TXT file unmodified:
- Open the CSV file in reading mode and the TXT file in writing mode.
- Read the CSV file and store it in a variable.
- Write the content into the TXT file.
Here’s the code snippet that solves our basic challenge:
# 1. Open the CSV file in reading mode and the TXT file in writing mode with open('my_file.csv', 'r') as f_in, open('my_file.txt', 'w') as f_out: # 2. Read the CSV file and store in variable content = f_in.read() # 3. Write the content into the TXT file f_out.write(content)
π² Little-Known Fact: Python allows multiple expressions in the context manager (with
opening line) if you separate them with a comma.
The content of the .csv
and .txt
files is identical:
Name,Job,Age,Income Alice,Programmer,23,110000 Bob,Executive,34,90000 Carl,Sales,45,50000
So far, so good. But what if you have a slightly different problem:
Method 2: CSV to TXT Empty Space Delimiter
Challenge: How to convert a CSV file to a TXT file in Python by replacing the delimiter ','
with the empty space ' '
?
Example: Convert the following file 'my_file.csv'
…
Name,Job,Age,Income Alice,Programmer,23,110000 Bob,Executive,34,90000 Carl,Sales,45,50000
… to this file 'my_file.txt'
…
Name Job Age Income Alice Programmer 23 110000 Bob Executive 34 90000 Carl Sales 45 50000
Here’s the simple solution to this challenge:
If you want to change the delimiter ','
to an empty string ' '
in the new TXT file, read the .csv
file and write its content into a new .txt
file using the open()
, read()
, string.replace()
, and write()
functions without importing any library.
To convert a CSV to a TXT file in Python, perform the following steps:
- Open the CSV file in reading mode and the TXT file in writing mode.
- Read the CSV file into a string.
- Create a new string by replacing all occurrences of the delimiter
','
with the empty string' '
. - Write the content into the TXT file.
with open('my_file.csv', 'r') as f_in, open('my_file.txt', 'w') as f_out: content = f_in.read().replace(',', ' ') f_out.write(content)
So far, so good. But in Python, there are always many ways to solve a problem. Let’s have a look at a powerful alternative to the no-library approach used before:
Method 3: CSV to TXT using Pandas
Assuming you’ve already installed pandas in your local environment, you can write a CSV to a TXT file in Python pandas using the following four steps:
- Import the
pandas
library. - Read the CSV file into a DataFrame using
pd.read_csv()
. - Convert the DataFrame to a String using the built-in
str()
function. - Print the string to a file using the file argument of the
print()
function, for example.
Here’s the basic Python example:
import pandas as pd df = pd.read_csv('my_file.csv') content = str(df) print(content, file=open('my_file.txt', 'w'))
π² Little-Known Fact: Python’s print()
function allows you to write a string directly into a file object if you use the file
argument as shown in the code snippet.
The output of the previous code snippet is as follows:
Name Job Age Income 0 Alice Programmer 23 110000 1 Bob Executive 34 90000 2 Carl Sales 45 50000
Beautiful, isn’t it? π
Let’s have a look at the last variation of the “CSV to TXT” problem addressed in this tutorial:
Method 4: CSV Columns or Rows to TXT using Pandas
How to write one or more individual columns or rows of the CSV file into a TXT file using Python Pandas?
- Import the
pandas
library. - Read the CSV file into a DataFrame using
pd.read_csv()
. - Select the column(s) or row(s) to write into the TXT file from the DataFrame using Pandas indexing or slicing.
- Call
df.to_string()
to convert the DataFrame to a string in a human-readable way. - Print the string to a file using the file argument of the
print()
function, for example.
import pandas as pd df = pd.read_csv('my_file.csv') content = str(df['Name']) print(content, file=open('my_file.txt', 'w'))
The content in a new file 'my_file.txt'
:
0 Alice 1 Bob 2 Carl
Of course, you can also select individual rows or multiple columns like so:
import pandas as pd df = pd.read_csv('my_file.csv') content = df['Name'][:2].to_string() print(content, file=open('my_file.txt', 'w'))
The content of the new file 'my_file.txt'
shows that only the first two rows have been taken due to the slicing operation [:2]
in the previous code snippet:
0 Alice 1 Bob
Done! You’ve earned some programming enjoyment:
Programmer Humor
β Question: How did the programmer die in the shower? β οΈ
β Answer: They read the shampoo bottle instructions:
Lather. Rinse. Repeat.
More Python CSV Conversions
π Learn More: I have compiled an “ultimate guide” on the Finxter blog that shows you the best method, respectively, to convert a CSV file to JSON, Excel, dictionary, Parquet, list, list of lists, list of tuples, text file, DataFrame, XML, NumPy array, and list of dictionaries.
Text to CSV: If you want to learn how to convert a text file back to a CSV, feel free to check out this guide on the Finxter blog.
Conclusion
I hope you enjoyed reading this article and learned something new. Feel free to join our email newsletter with free cheat sheets and weekly Python tutorials: