Eli teksti/numerot pitäisi saada käännettyä pystysuorista riveistä vaakasuoriin riveihin niin että joka kirjaimen/numeron välissä on(,) merkki. Esim: A.txt tiedostossa lukee rivit:
Sssssssss. Rrrrrrtt 121212121 13344334 333121212 1162627S 212SSSSS2 23444SSS SS1345725 2727255S 1338388SS 24828SSS 133777222 23SS2827 222725155 216SS161
Ja nämä pystysuorat rivit pitäisi saada B.txt tiedostoon muodossa:
1,3,2,s,1,1,2 2,3,1,s,3,3,2 ......
Jos pystysuorassa rivissä on kirjain, se pitäisi saada vaakasuoraan riveihin pienenä kirjaimena. Sssssssss ja Rrrrrrr otsikoita ei B.txt tarvisi huomioida mitenkään, kaikki rivit saisi tulostua yhtenä pötkönä vaakasuorassa. Ja mahdollisesti B.txt tiedosto on jo olemassa ja jossa ensimmäiset 5riviä saisi pysyä ennallaan ja nämä vaakarivit tulisi vaan niiden jatkoksi.
Testaamatta, jyräten aiemman B:n:
with open('A.txt') as f: rivit = f.readlines() with open('B.txt', 'w') as f: for sarake in zip(*rivit[2:]): f.write(','.join(sarake).lower() + '\n')
Silmukan sisäisellä if-lauseella voi karsia mahdolliset turhat sarakkeet.
Chiman kirjoitti:
Testaamatta, jyräten aiemman B:n:
with open('A.txt') as f: rivit = f.readlines() with open('B.txt', 'w') as f: for sarake in zip(*rivit[2:]): f.write(','.join(sarake).lower() + '\n')Silmukan sisäisellä if-lauseella voi karsia mahdolliset turhat sarakkeet.
Näyttäisi toimivan hyvin pitkälti niinkuin pitikin nuilla esimerkeillä, ainut vaan että minun pikaisesti tehty esimerkki(A.txt) ei ollu oikein :(
Siinä onkin välilyönnit pystysuorien rivien välissä ja joka kolmannen merkin jälkeen ylhäältä alas on myös välilyönti, paitsi viimeisessä sarakkeessa neljä merkkiä.
Tässä se täsmälleen oikealta näyttävä A.txt kaikkine välilyönteineen ja jakoineen. Lista saattaa jatkua tuonne alaspäin tällä tyylillä/jaolla hyvinkin pitkästi. Kaikki kuitenkin pitäisi saada pinoon vaakasuoraan.
SSSSSSSSSS RRRRRRRRRR 1 2 1 2 1 2 1 2 1 2 1 3 3 4 4 3 3 4 6 9 3 3 3 1 2 1 2 1 2 2 1 1 6 2 6 2 7 S 4 8 2 1 2 S S S S S 2 5 2 3 4 4 4 S S S 3 7 S S 1 3 4 5 7 2 5 G 2 7 2 7 2 5 5 S 3 5 1 3 3 8 3 8 8 S S 3 2 4 8 2 8 S S S 2 5 1 3 3 7 7 7 2 2 2 G 2 3 S S 2 8 2 7 2 5 2 2 2 7 2 5 1 5 5 2 2 1 6 S S 1 6 1 7 5 4 4 5 6 5 6 6 3 1 2 5 2 6 4 6 8 6 6 7 5 4 7 8 9 6 6 3 2 4 4 5 6 6 5 9 6 9 9 8 5 4 S S 2 V 2 V V V 4 V 6 6 8 9 0 0 0 9 6 4 7 9 9 9 8 X X C 4 H 9 0 J 8 H 7 6 0 6 4 S S 2 V 2 V V V V 6 6 8 9 0 0 0 4 9 5 1 3 3 8 3 8 8 S S 2 4 8 2 8 S S S 4 0 5 TTTTTTTTTT UUUUUUUUUU 6 2 1 2 1 2 1 2 1 2 A 3 3 4 4 3 3 4 6 9 3 2 3 1 2 1 2 1 2 2 E 1 6 2 6 2 7 S 4 8 2 1 2 S S S S S 2 5 2 3 4 4 4 S S S 3 7 S S 5 3 4 5 7 2 5 G 1 7 2 7 2 5 5 S 3 5 2 3 3 8 3 8 8 S S 3 1 4 8 2 8 S S S 2 5 1 3 5 7 7 7 2 1 2 G 1 3 S S 2 8 2 7 2 5 9 2 2 7 2 5 1 4 5 2 2 1 6 S S 1 6 1 7 5 4 4 5 6 5 6 6 3 1 2 5 2 6 4 6 8 6 6 7 5 6 7 1 9 6 6 3 2 4 4 5 6 6 5 9 8 9 9 8 5 4 S S 2 V 2 V V V 4 V 6 6 8 9 0 0 0 9 6 4 7 9 9 9 8 X X C 4 H 9 0 J 8 H 7 6 0 6 4 S S 2 V 2 V V V V 6 6 8 9 0 0 0 4 9 5 1 3 3 8 3 8 8 S S 2 4 8 2 8 S S S 4 0 5
B.Txt tulostuu kyllä juuri niinkuin pitää, paitsi että Sssssss ja Rrrrrr välissä oleva väli tulee täyteen pilkkuja kun sen pitäisi jatkua yhtenäisenä.
1,2,2,5,s,2,5,1,4,v,c,v,s 2,2,5,g,3,g,2,2,4,4,4,v,2 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 1,1,2,2,2,2,2,5,5,v,h,6,4 3,1,3,7,4,3,1,2,6,6,9,6,8
Pitäisi tulla näin:
1,2,2,5,s,2,5,1,4,v,c,v,s 2,2,5,g,3,g,2,2,4,4,4,v,2 1,1,2,2,2,2,2,5,5,v,h,6,4 3,1,3,7,4,3,1,2,6,6,9,6,8
Kiitos!
#!/usr/bin/env/python3 def kohderivit(rivit_it): for rivi in rivit_it: if len(rivi.split()) >= 20: yield rivi def kohdesarakkeet(sarakkeet_it): for sarake in sarakkeet_it: if any(c.isalnum() for c in sarake): yield sarake with open('A.txt') as fi, open('B.txt', 'w') as fo: ryhma = [] for rivi in kohderivit(fi): ryhma.append(rivi.lower()) if len(ryhma) < 13: continue for sarake in kohdesarakkeet(zip(*ryhma)): fo.write(','.join(sarake) + '\n') ryhma = []
Ehkä toimii, ehkä ei. B.txt-alun säilytys jää kotitehtäväksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.