Ma'lumotlarni magistraldan ma'lumotlar bilan ishlashga aylantirish

Menda shunga o'xshash bir qator bor:

MSG, 4,111,11111,8963C4,111111,2017/03/14,10: 38: 27.036,2017/03/14,10: 38: 27.052 , 524,140 , 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,1, 0,0   MSG, 8,111,11111,4B16BB, 111111,2017/03/14,10: 38: 27.045,2017/03/14,10: 38: 27.102 , 0

Ma'lumotlarni ushbu satrdan bir nechta satr va ustunli jadvalga yoki qatorga qo'yishni istayman. Ma'lumotni ',' bilan ajratmoqchiman va agar faylim bor bo'lsa, buni qanday amalga oshirishni bilaman, lekin bu holatda fayl emas.

Avvalambor, satrlarni ajratib ko'rsatishga harakat qildim:

lines = data1.split("\n")

Bu ishlaydi, lekin men ro'yxatni "," bilan ajratishga harakat qilganda:

lines.split(',')

u menga quyidagi xatolarni beradi:

AttributeError: "list" obyekti "split" xususiyatiga ega emas.

Ro'yxatlarni sparring qilish yoki ma'lumotlar bazalarini yoki kataloglarni ro'yxatlardan yaratish buyrug'i bormi?

0

7 javoblar

foydalanganingizdan so'ng

lines = data1.split("\n")

satrlarni ro'yxatlash va funksiyaning bo'linishi strings uchun.

shuning uchun uni ma'lum bir satrda qo'llashni istasangiz, indeksni ishlatib, split() ni qo'llashingiz mumkin

lines[0].split(',')

jadvallar yoki ro'yxatlar ro'yxatini yaratish uchun siz chiziqlar ro'yxatida pastadir mumkin va keyin yana bo'linadi.

2
qo'shib qo'ydi

Siz shuni sinashingiz mumkin,

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 
1
qo'shib qo'ydi

Siz shuni sinashingiz mumkin,

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 
1
qo'shib qo'ydi

Buni tushunganim uchun , paydo bo'lganda har bir satrni ajratmoqchisiz. Agar shunday bo'lsa, siz foydalanishingiz mumkin

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

Bu sizga ro'yxatlarning ro'yxatini beradi: " step2 [n] " pastki ro'yxati " har qanday vaziyatda lines [n] bo'linib bo'lgach,/code>. Bu misolda ketma-ket bir nechta vergul bo'lganligi sababli bo'sh satrlarni o'z ichiga oladi.

Ro'yxatlarning ro'yxatini faqat bitta ro'yxatga olish uchun tekislashni xohlasangiz, foydalanishingiz mumkin

step3 = [item for sublist in step2 for item in sublist]  # flatten that list
0
qo'shib qo'ydi

Buni tushunganim uchun , paydo bo'lganda har bir satrni ajratmoqchisiz. Agar shunday bo'lsa, siz foydalanishingiz mumkin

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

Bu sizga ro'yxatlarning ro'yxatini beradi: " step2 [n] " pastki ro'yxati " har qanday vaziyatda lines [n] bo'linib bo'lgach,/code>. Bu misolda ketma-ket bir nechta vergul bo'lganligi sababli bo'sh satrlarni o'z ichiga oladi.

Ro'yxatlarning ro'yxatini faqat bitta ro'yxatga olish uchun tekislashni xohlasangiz, foydalanishingiz mumkin

step3 = [item for sublist in step2 for item in sublist]  # flatten that list
0
qo'shib qo'ydi

@Shahs yordami bilan men kerakli narsani qo'lga kiritdim.

Kod shu kabi ko'rinadi va u, ehtimol u eng yaxshi bo'lmasa ham ishlaydi:

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]
0
qo'shib qo'ydi

@Shahs yordami bilan men kerakli narsani qo'lga kiritdim.

Kod shu kabi ko'rinadi va u, ehtimol u eng yaxshi bo'lmasa ham ishlaydi:

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]
0
qo'shib qo'ydi
Python
Python
372 ishtirokchilar

Bu guruh python dasturlash tilini muhokama qilish uchun. Iltimos, o'zingizni hurmat qiling va faqat dasturlash bo'yicha yozing. Botlar mavzusini @botlarhaqida guruhida muhokama qling! FAQ: @PyFAQ Offtopic: @python_uz_offtopic

Python offtopic group !
Python offtopic group !
150 ishtirokchilar

@python_uz gruppasining offtop gruppasi. offtop bo'lsa ham reklama mumkin emas ) Boshqa dasturlash tiliga oid gruppalar @languages_programming