我有一个看起来像这样的字符串:
MSG,4,111,11111,8963C4,111111,2017 / 03 / 14,10:38:27.036,2017 / 03 / 14,10:38:27.052 ,,, 524140 ,,, 64 ,,,,, 0 MSG,8,111,11111,4B199E,111111,2017 / 03 / 14,10:38:27.039,2017 / 03 / 14,10:38:27.053 ,,,,,,,,,,,, 0 MSG,5,111,11111,4631CC,111111,2017 / 03 / 14,10:38:27.039,2017 / 03 / 14,10:38:27.053,43000 ,,,,,,, 0,...,0,0 MSG,5,111,11111,502CC6,111111,2017 / 03 / 14,10:38:27.041,2017 / 03 / 14,10:38:27.053,41000 ,,,,,,, 0,...,0,0 MSG,5,111,11111,3C66B0,111111,2017 / 03 / 14,10:38:27.042,2017 / 03 / 14,10:38:27.053,36975 ,,,,,,, 0,...,0,0 MSG,8,111,11111,4B16BB,111111,2017 / 03 / 14,10:38:27.045,2017 / 03 / 14,10:38:27.102 ,,,,,,,,,,,, 0
我想将此字符串中的数据放入具有多行和列的表或数组中。我想用','分隔数据,如果我有一个文件,我知道怎么做,但在这种情况下,没有文件,只有一个字符串。
我首先尝试按行分隔字符串:
lines = data1.split("\n")
虽然有效,但是当我试图用','这样的列表分隔列表时:
lines.split(',')
它给了我以下错误:
AttributeError:'list'对象没有属性'split'
是否有命令来列出列表或从列表中创建数据表或数组?
答案 0 :(得分:2)
使用后
lines = data1.split("\n")
lines是一个列表,函数split用于字符串。
因此,如果您想将其应用于特定字符串,您可以使用索引并应用split(),例如
lines[0].split(',')
创建一个表或列表列表,您可以在行列表上循环,然后再次应用拆分。
答案 1 :(得分:1)
你可以试试,
import re
a = 'MSG,4,111,11111\naa,bb' #store your entire string here
print(re.split(' |,|\n', a)) # this will give you the list
答案 2 :(得分:0)
据我所知,你希望在,
出现时拆分每一行。如果是这样,您可以使用
lines = data1.split('\n') # list of strings
step2 = [line.split(',') for line in lines] # split every string in that list,
# this gives a list of lists of strings
这会为您提供一个列表列表:“子列表”step2[n]
包含在每次lines[n]
出现时分割,
时得到的字符串。这包含一些空字符串,因为您的示例有几个连续的逗号。
如果要将列表列表展平以获得列表,可以使用
step3 = [item for sublist in step2 for item in sublist] # flatten that list
答案 3 :(得分:0)
在@shahs的帮助下,我能够得到我需要的东西。
这就是代码的样子,虽然它可能不是最好的但它仍然有效:
lines = data1.split("\n")
myarray = np.asarray(lines)
array = np.zeros(shape=(len(lines),22))
array=array.astype('str')
for i1 in range(len(lines)):
for i2 in range(len(array[0])):
data3=lines[i1].split(',')
array[i1,i2]=data3[i2]