I have a text file in the following format that I am trying to convert into rows and columns:
red,red,blue
blue,red,blue
blue,blue,red
Once the conversion is complete, I want to store the above in a rows
variable:
row[0] # should return 'red red blue'
row[0][2] # should return 'blue'
So far I have gotten as far as:
file = open('myfile.txt')
for row in file:
# do something here
But i'm not sure what to do next.. can someone help? Thanks in advance!
1.numpy solution: (because numpy tag)
Use numpy.genfromtxt
for numpy array:
import numpy as np
arr = np.genfromtxt('file.txt',dtype='str',delimiter=',')
print (arr)
[['red' 'red' 'blue']
['blue' 'red' 'blue']
['blue' 'blue' 'red']]
print (arr[0])
['red' 'red' 'blue']
print (arr[0][2])
blue
2.pandas solution:
Use read_csv
for DataFrame
and for select values loc
:
import pandas as pd
df = pd.read_csv('file.txt', header=None)
print (df)
0 1 2
0 red red blue
1 blue red blue
2 blue blue red
#select first row to Series
print (df.loc[0])
0 red
1 red
2 blue
Name: 0, dtype: object
#select value by index and column
print (df.loc[0, 2])
blue
3.pure python solutions:
If want nested lists use nested list comprehension
:
data = [[item for item in line.rstrip('\r\n').split(',')]
for line in open('file.txt')]
print (data)
[['red', 'red', 'blue'], ['blue', 'red', 'blue'], ['blue', 'blue', 'red']]
Or with module csv
:
import csv
reader = csv.reader(open("file.txt"), delimiter=',')
data = [word for word in [row for row in reader]]
print (data)
[['red', 'red', 'blue'], ['blue', 'red', 'blue'], ['blue', 'blue', 'red']]
print (data[0])
['red', 'red', 'blue']
print (data[0][2])
blue
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With