Programim dhe zhvillim, javascript, python, php, html

Ndani vargun e kufizuar me të njëjtën kategori në një tabelë me dy kolona duke përdorur Python 3

Unë kam një tabelë me 2 kolona që përbëhet nga artikujt në kolonën e parë dhe kategoritë e ngjyrave në të dytën, me artikullin dhe ngjyrat të kufizuara nga skeda:

car blue
bicycle;scooter green
boat yellow
firetruck;airplane;skateboard red
motorcycle black

Do të doja të transformoja tabelën/listën për të lexuar:

car blue
bicycle green
scooter green
boat yellow
firetruck red
airplane red
skateboard red
motorcycle black

Po mendoja se do të më duhej të kisha një funksion të përcaktuar për të trajtuar ndarjen e vargut të kufizuar në kolonën 1 dhe për të shkruar kategorinë e duhur në kolonën e dytë për çdo rresht/rresht.

Unë mendoj se logjika në thelb thotë:

with open('colors_in.txt', 'rt') as src:
with open('colors_out.txt', 'wt') as dest:

#store column 2 category in a variable and break apart the string at the delimiter in new lines + category
def splitter()
    colorval = (row[1] for row in src)
    for line in src:
        for word in line.split(';'):
            dest.write(word.rstrip() + colorval + '\n')

if ";" in line:
    splitter()
else:
    for line in src:
        dest.write(line)

Unë kam shikuar përreth për qasje ndaj këtij problemi dhe kam parë disa elementë mjaft kompleksë që përfshijnë numpy dhe imap() që nuk jam vërtet i sigurt se si t'i inkorporoj. E di që kodi i mësipërm është jashtëzakonisht i pasaktë -- thjesht u përpoqa të shpreh sa më mirë që të mundja atë që dua që kodi të bëjë/përfundojë. Do të ishim mirënjohës për çdo pasqyrë - faleminderit!


  • Dhe, do të doja të dija nëse ka libra referimi atje që do të kishin shembuj të tillë së bashku me zgjidhjet e tyre (si një lloj libër gatimi Python). Duket se ka shumë...do të vlerësoja rekomandimet për të ndihmuar në ngushtimin e fushës. 26.08.2015
  • Dëshironi të ndryshoni vërtet skedarin origjinal? 26.08.2015
  • Gjithashtu ka më shumë se një fjalë përpara ; 26.08.2015
  • @Padraic - Nuk dua të ndryshoj skedarin origjinal. Krijo një skedar të ri me transformimin. Dhe mund të ketë shumë fjalë të kufizuara nga ; -- si big firetruck;fast airplane;broken skateboard, por mendoj se zgjidhja e propozuar nga Anand më poshtë e merr këtë parasysh pasi ai e ka përcaktuar të gjithë vargun si një kolonë. Mund te jete gabim.. 26.08.2015
  • Provova me vargje me shumë fjalë dhe duket se ka funksionuar siç pritej me zgjidhjen e mëposhtme. Unë mendoj se kjo është për shkak se kufizuesi është përcaktuar në mënyrë eksplicite si \t për modulin CSV (skedari i hyrjes u caktua me skeda në fillim). Pra, hapësirat në varg trajtohen si pjesë e një fjale. 26.08.2015
  • Më ka munguar skedari juaj ishte i kufizuar në skedë 26.08.2015

Përgjigjet:


1

Ju pseudo-kodi ka shumë probleme (duke mos folur për çështje sintaksore, por për çështje logjike).

Do të përdorja modulin csv për këtë. Thjesht lexoni çdo rresht, ndani kolonat e para bazuar në ';', nëse nuk ka ';', do të merrni një listë me një element, nëse ka ';', do të ktheni listën e ndarjes dhe më pas shkruajeni atë në csv tjetër duke duke përdorur atë vlerë me row[1] (elementi i dytë i rreshtit).

Shembull -

with open('colors_in.txt', 'r') as src, open('colors_out.txt', 'w') as dest:
    reader = csv.reader(src,delimiter='\t')
    writer = csv.writer(dest,delimiter='\t')
    for row in reader:
        for col1 in row[0].split(';'):
            writer.writerow([col1,row[1]])
26.08.2015
  • Mbresëlënës! Kjo padyshim e bëri mashtrimin. Unë jam në një makinë Windows, kështu që redaktova r dhe wrt dhe wt dhe gjithashtu shtova newline = '' në mënyrë që prodhimi im të mos kishte vija boshe midis rreshtave. 26.08.2015
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..