Python: Separate text file data into tuples?

Question:

I’m currently working on trying to separate values inside of a .txt file into tuples. This is so that, later on, I want to create a simple database using these tuples to look up the data. Here is my current code:

with open("data.txt") as load_file:
    data = [tuple(line.split()) for line in load_file]

c = 0
pts = []
while c < len(data):
    pts.append(data[c][0])
    c += 1
    print(pts)
    pts = []

Here is the text file:

John|43|123 Apple street|514 428-3452
Katya|26|49 Queen Mary Road|514 234-7654
Ahmad|91|1888 Pepper Lane|

I want to store each value that is separated with a "|" and store these into my tuple in order for this database to work. Here is my current output:

['John|43|123']
['Katya|26|49']
['Ahmad|91|1888']

So it is storing some of the data as a single string, and I can’t figure out how to make this work. My desired end result is something like this:

['John', 43, '123 Apple street', 514 428-3452]
['Katya', 26, '49 Queen Mary Road', 514 234-7654]
['Ahmad', 91, '1888 Pepper Lane', ]
Asked By: giotto1

||

Answers:

Try to use csv module with custom delimiter=:

import csv

with open("your_file.txt", "r") as f_in:
    reader = csv.reader(f_in, delimiter="|")

    for a, b, c, d in reader:
        print([a, int(b), c, d])

Prints:

['John', 43, '123 Apple street', '514 428-3452']
['Katya', 26, '49 Queen Mary Road', '514 234-7654']
['Ahmad', 91, '1888 Pepper Lane', '']
Answered By: Andrej Kesely

try with this:

with open("data.txt") as load_file:
    data = [line.strip('n').split('|') for line in load_file]
for elem in data:
    print(elem)
Answered By: Hamall
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.