Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tut] Python Convert CSV to Text File (.csv to .txt)
1
Python Convert CSV to Text File (.csv to .txt)

5/5 – (1 vote)

Basic Challenge

Here’s the content of an example CSV file
Code:
"my_file.csv"
used in our code snippet below:

Code:
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
Code:
"my_file.csv"
to a new TXT file
Code:
"my_file.txt"
as is without changing its content

Code:
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
Code:
','
) in the CSV file unmodified, the conversion is simple: read the
Code:
.csv
file and write its content into a new
Code:
.txt
file using the
Code:
open()
,
Code:
read()
, and
Code:
write()
functions without importing any library.

In other words, perform the three steps to write a CSV to a TXT file unmodified:

  1. Open the CSV file in reading mode and the TXT file in writing mode.

  2. Read the CSV file and store it in a variable.

  3. Write the content into the TXT file.

Here’s the code snippet that solves our basic challenge:

Code:
# 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)

[Image: 1f632.png] Little-Known Fact: Python allows multiple expressions in the context manager (
Code:
with
opening line) if you separate them with a comma.

The content of the
Code:
.csv
and
Code:
.txt
files is identical:

Code:
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
Code:
','
with the empty space
Code:
' '
?

Example: Convert the following file
Code:
'my_file.csv'
…

Code:
Name,Job,Age,Income Alice,Programmer,23,110000 Bob,Executive,34,90000 Carl,Sales,45,50000

… to this file
Code:
'my_file.txt'
…

Code:
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
Code:
','
to an empty string
Code:
' '
in the new TXT file, read the
Code:
.csv
file and write its content into a new
Code:
.txt
file using the
Code:
open()
,
Code:
read()
,
Code:
string.replace()
, and
Code:
write()
functions without importing any library.

To convert a CSV to a TXT file in Python, perform the following steps:

  1. Open the CSV file in reading mode and the TXT file in writing mode.

  2. Read the CSV file into a string.

  3. Create a new string by replacing all occurrences of the delimiter
    Code:
    ','
    with the empty string
    Code:
    ' '
    .

  4. Write the content into the TXT file.

Code:
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:

  1. Import the
    Code:
    pandas
    library.

  2. Read the CSV file into a DataFrame using
    Code:
    pd.read_csv()
    .

  3. Convert the DataFrame to a String using the built-in
    Code:
    str()
    function.

  4. Print the string to a file using the file argument of the
    Code:
    print()
    function, for example.

Here’s the basic Python example:

Code:
import pandas as pd df = pd.read_csv('my_file.csv') content = str(df) print(content, file=open('my_file.txt', 'w'))

[Image: 1f632.png] Little-Known Fact: Python’s
Code:
print()
function allows you to write a string directly into a fileobject if you use the
Code:
file
argument as shown in the code snippet.

The output of the previous code snippet is as follows:

Code:
Name Job Age Income 0 Alice Programmer 23 110000 1 Bob Executive 34 90000 2 Carl Sales 45 50000

Beautiful, isn’t it? [Image: 1f49c.png]

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?

  1. Import the
    Code:
    pandas
    library.

  2. Read the CSV file into a DataFrame using
    Code:
    pd.read_csv()
    .

  3. Select the column(s) or row(s) to write into the TXT file from the DataFrame using Pandas indexing or slicing.

  4. Call
    Code:
    df.to_string()
    to convert the DataFrame to a string in a human-readable way.

  5. Print the string to a file using the file argument of the
    Code:
    print()
    function, for example.

Code:
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
Code:
'my_file.txt'
:

Code:
0 Alice 1 Bob 2 Carl

Of course, you can also select individual rows or multiple columns like so:

Code:
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
Code:
'my_file.txt'
shows that only the first two rows have been taken due to the slicing operation
Code:
[:2]
in the previous code snippet:

Code:
0 Alice 1 Bob

Done! You’ve earned some programming enjoyment:

Programmer Humor

[Image: 2753.png]
Code:
Question: How did the programmer die in the shower? ☠

❗ Answer: They read the shampoo bottle instructions:
Lather. Rinse. Repeat.

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:
Reply

Users browsing this thread:
1 Guest(s)


Forum Jump: