在python中将csv中的字符串条目写入数组?

在python中将csv中的字符串条目写入数组?,python,arrays,string,numpy,Python,Arrays,String,Numpy,我正在努力将字符串值放入python中的数组中。我有一个文件,大约30k条目的长度,每行如下所示: 0R1,Sn=0.3M,Sm=0.7M,Sx=1.5M 我不需要0R1部件;我所需要的是一个数组中的所有Sn值,另一个数组中的Sm值,以及另一个数组中的Sx值(当然,我还没有弄清楚如何从字符串中获取数值,但我稍后会考虑)。我想现在我正在尝试制作一个字符串数组 这是我的密码: fname = '\\pathname...\\WXT51003.txt' f1 = open(fname, 'r') i

我正在努力将字符串值放入python中的数组中。我有一个文件,大约30k条目的长度,每行如下所示:

0R1,Sn=0.3M,Sm=0.7M,Sx=1.5M

我不需要0R1部件;我所需要的是一个数组中的所有Sn值,另一个数组中的Sm值,以及另一个数组中的Sx值(当然,我还没有弄清楚如何从字符串中获取数值,但我稍后会考虑)。我想现在我正在尝试制作一个字符串数组

这是我的密码:

fname = '\\pathname...\\WXT51003.txt'
f1 = open(fname, 'r')

import csv
import numpy
from numpy import zeros
reader = csv.reader(f1)
Max = zeros((29697,1), dtype = numpy.str)
Mean = zeros((29697,1), dtype = numpy.str)
Min = zeros((29697,1), dtype = numpy.str)
for i, row in enumerate(reader):
    Min[i] = row[1]
    Mean[i] = row[2]
    Max[i] = row[3]

f1.close()
print Min[0:10]
print语句的输出是一个每行都带有“S”的数组。如何让它读取整个字符串,而不仅仅是第一个字符

reader = csv.reader(f1)
rows = list(reader)
cols = zip(*rows)
Min = cols[1]
Mean = cols[2]
Max = cols[3]


# or if you really want numpy.arrays
Min = numpy.array(cols[1]) #dtype will be auto-assigned
Mean = numpy.array(cols[2]) #dtype will be auto-assigned
Max = numpy.array(cols[3]) #dtype will be auto-assigned
我会怎么做。。。(不使用numpy进行此操作…至少还没有)


如果您需要使用numpy,那么请使用数据类型“S8”或您需要的字符串大小。。。或者使用dtype.object或其他。。。默认情况下,它将是一个len1字符串类型…但实际上,根据您的代码片段,我认为没有理由在这里使用numpy

使用数据类型“S8”或您需要的字符串有多大。。。或者使用dtype.object或其他。。。默认情况下,它将是len1字符串类型。。。或者不要使用numpy(因为你无论如何都在处理字符串)@JoranBeasley如果不同的行具有不同的字符串长度,那么这会起作用吗?例如,如果Sn=0.3M,则字符串长度为7,但如果Sn=10.1M,则字符串长度不同。当您将其设置为最大长度时(请参阅numpy文档中关于数据类型的部分),我将坚持OP的命名。在这里,您可以屏蔽Python内置的
min()
max()
函数。。。(修正)很好的回答。或者,您可以重写为在Python3中工作的oneliner
(,Min,Mean,Max=zip(*csv.reader(f1))