如何在python中将数据行拆分为以逗号分隔的列

新手上路,请多包涵

我有一个以下格式的文本文件,我试图将其转换为行和列:

 red,red,blue
blue,red,blue
blue,blue,red

转换完成后,我想将以上内容存储在 rows 变量中:

 row[0] # should return 'red red blue'
row[0][2] # should return 'blue'

到目前为止,我已经做到了:

 file = open('myfile.txt')
for row in file:
    # do something here

但我不确定下一步该怎么做.. 有人可以帮忙吗?提前致谢!

原文由 Trung Tran 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 406
2 个回答

没有任何外部模块的解决方案:

 output = []

with open('file.txt', 'r') as reading:
    file_input = reading.read().split('\n')

for row in file_input:
    output.append(row.split(','))

print(output)

原文由 Stack 发布,翻译遵循 CC BY-SA 3.0 许可协议

1.numpy解决方案:(因为numpy标签)

numpy.genfromtxt 用于 numpy 数组:

 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.熊猫解决方案

read_csv 用于 DataFrame 并用于选择值 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.纯python解决方案

如果想要嵌套列表使用 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']]

或者使用模块 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

原文由 jezrael 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题