[Python] Fordere 100 Schläge heraus! (010-014)

Über die Geschichte etc.

Siehe Erster Beitrag

Klopfstatus

9/24 hinzugefügt

Kapitel 2: Grundlagen des UNIX-Befehls

hightemp.txt ist eine Datei, in der die Aufzeichnung der höchsten Temperatur in Japan im tabulatorgetrennten Format "Präfektur", "Punkt", "℃" und "Tag" gespeichert wird. Erstellen Sie ein Programm, das die folgende Verarbeitung ausführt, und führen Sie hightemp.txt als Eingabedatei aus. Führen Sie außerdem denselben Prozess mit einem UNIX-Befehl aus und überprüfen Sie das Ausführungsergebnis des Programms.

010. Anzahl der Zeilen zählen

Zählen Sie die Anzahl der Zeilen. Verwenden Sie zur Bestätigung den Befehl wc.

wc_010.py


#-*- coding:utf-8 -*-

import subprocess
import codecs

if __name__=="__main__":
    filename = 'hightemp.txt'
    basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
    f = codecs.open(filename,'r','utf-8')

#\Zähle die Anzahl von n. Das Array beginnt bei 0, also am Ende+1
    for index,data in enumerate(f):
        data.split('\n')

    print("Die Anzahl der Zeilen in der Datei",index+1)

#Überprüfen Sie die Ausgabe mit dem Befehl wc
    output = subprocess.check_output(["wc","-l",basepath+filename])
    print(output.decode('utf-8'))

result


24 Zeilen in der Datei
      24 /Users/masassy/PycharmProjects/Pywork/training/hightemp.txt

Impressionen: Öffnen Sie die Datei und zählen Sie den Zeilenvorschubcode nach Index. Codecs, die durch Angabe des Zeichencodes gelesen werden können, sind praktisch.

011. Ersetzen Sie die Registerkarten durch Leerzeichen

Ersetzen Sie jede Registerkarte durch ein Leerzeichen. Verwenden Sie zur Bestätigung den Befehl sed, den Befehl tr oder den Befehl expand.

tab2space_011.py


-*- coding:utf-8 -*-

import subprocess
import codecs

if __name__=="__main__":
    filename = 'hightemp.txt'
    basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
    f = codecs.open(filename,'r','utf-8')
#read liest alle Zeichen, readline liest eine Zeile, readlines liest alle Zeilen
    r = f.read()
    space_data=''
    for tab_data in r:
        if(tab_data=='\t'):
            space_data += " "
            continue
        else:
            space_data += tab_data

    print(space_data)
#Überprüfen Sie die Ausgabe mit dem Befehl sed
    output =subprocess.check_output(["sed","-e" ,"s/\t/ /g",basepath+filename])
    print(output.decode('utf-8'))

result


Präfektur Kochi Egawasaki 41 2013-08-12
40 Kumagai, Präfektur Saitama.9 2007-08-16
40 Tajimi, Präfektur Gifu.9 2007-08-16
(Ausgelassen, weil das Ergebnis lang ist)

Präfektur Kochi Egawasaki 41 2013-08-12
40 Kumagai, Präfektur Saitama.9 2007-08-16
40 Tajimi, Präfektur Gifu.9 2007-08-16
(Ausgelassen, weil das Ergebnis lang ist)

Process finished with exit code 0

Impressionen: Ich konnte den Unterschied zwischen read (), readline () und readlines () bestätigen. Der Unterprozess, der Befehle verwenden kann, ist sehr praktisch.

012. Speichern Sie die erste Spalte in col1.txt und die zweite Spalte in col2.txt

Speichern Sie nur die erste Spalte jeder Zeile als col1.txt und die zweite Spalte als col2.txt. Verwenden Sie zur Bestätigung den Befehl cut.

cut_012.py


# -*- coding:utf-8 -*-

import codecs
import subprocess

if __name__ == "__main__":
    filename = 'hightemp.txt'
    writename1='col1.txt'
    writename2='col2.txt'
    basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
    f = codecs.open(filename,'r','utf-8')
    r = f.readlines()
    word_list1= []
    word_list2= []

#mit split\Für jedes t separat zur Liste hinzufügen
    for temp1 in r:
        word_list1.append(temp1.split('\t')[0])
    f.close
    f = codecs.open(writename1,'w','utf-8')
    for word in word_list1:
        f.write(word+'\n')
    f.close

    for temp2 in r:
        word_list2.append(temp2.split('\t')[1])
    f.close
    f = codecs.open(writename2,'w','utf-8')
    for word in word_list2:
        f.write(word+'\n')
    f.close

#Überprüfen Sie die Ausgabe mit dem Befehl cut
    output = subprocess.check_output(["cut","-f","1,2",basepath+filename])
    print(output.decode('utf-8'))

result


*Der Befehl cut gibt gleichzeitig die erste und die zweite Spalte aus
Präfektur Kochi Egawazaki
Kumagai, Präfektur Saitama
Tajimi, Präfektur Gifu
(Ausgelassen, weil das Ergebnis lang ist)

Process finished with exit code 0

col1.txt
Präfektur Kochi
Saitama
Präfektur Gifu
(Ausgelassen, weil das Ergebnis lang ist)

col2.txt
Egawazaki
Kumagai
Tajimi
(Ausgelassen, weil das Ergebnis lang ist)

Eindruck: Ich habe die Verarbeitung in col1.txt und col2.txt unterteilt, aber es scheint eine gute Verarbeitung zu geben ...

013. Führen Sie col1.txt und col2.txt zusammen

Kombinieren Sie die in 12 erstellten Spalten col1.txt und col2.txt und erstellen Sie eine Textdatei, in der die erste und die zweite Spalte der Originaldatei durch Tabulatortrennzeichen angeordnet sind. Verwenden Sie zur Bestätigung den Befehl Einfügen.

merge_013.py


#-*- conding:utf-8 -*-

import codecs
import subprocess
basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
filename1 = 'col1.txt'
filename2 = 'col2.txt'
filename3 = 'col3.txt'

#Lesen Sie Dateien mit Readlines und listen Sie sie auf
f1 = codecs.open(filename1,'r','utf-8')
r1 = f1.readlines()
f1.close()

f2 = codecs.open(filename2,'r','utf-8')
r2 = f2.readlines()
f2.close()

s_r1=''
s_r2=''

#Ändern Sie die Liste in eine Zeichenfolge, r1\n ist\Wechseln Sie zu t(\Es wird eine Wache)
for data in r1:
    s_r1 += str(data)
    s_r1=s_r1.replace('\n','\t')

#Liste in Zeichenfolge ändern(\n bleibt wie es ist, weil es eine Wache ist)
for data in r2:
    s_r2 += str(data)

address=''
i=0
#s_Bewerten Sie r1 Zeichen für Zeichen und Wache(\t)Daten zur Adresse hinzufügen bis
for temp in s_r1:
    if(temp!='\t'):
        address+=temp
    else:
#s zu adressieren_Die Daten von r2(\n)Hinzufügen bis
        address+='\t'
        while(s_r2[i]!='\n'):
            address+=s_r2[i]
            i+=1
        else:
            address+='\n'
            i+=1
            continue

f3=codecs.open(filename3,'w','utf-8')
f3.write(address)
f3.close()

output=subprocess.check_output(["paste",basepath+filename1,basepath+filename2])
print(output.decode('utf-8'))

result


Präfektur Kochi Egawazaki
Kumagai, Präfektur Saitama
Tajimi, Präfektur Gifu
(Ausgelassen, weil das Ergebnis lang ist)
Process finished with exit code 0

Impressionen: Fügen Sie Daten in einer Doppelschleife hinzu.

014. N Zeilen von Anfang an ausgeben

Empfangen Sie die natürliche Zahl N beispielsweise über ein Befehlszeilenargument und zeigen Sie nur die ersten N Zeilen der Eingabe an. Verwenden Sie zur Bestätigung den Befehl head.

head_014.py


#-*- coding:utf-8 -*-

import codecs
import subprocess

def head(data,N):
    i=0
    j=0
    msg=''
    while(i<N):
        for temp in data[j]:
            if(temp!='\n'):
                msg += temp
                j+=1
            else:
                msg += '\n'
                i+=1
                j+=1
                break
    else:
        return msg

if __name__=="__main__":
    filename = 'hightemp.txt'
    basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
    f = codecs.open(filename,'r','utf-8')
    r=f.read()
    N=4
    msg = head(r,N)
    print(msg)

#Bestätigen Sie mit dem Befehl head
    output=subprocess.check_output(["head","-n",str(N),basepath+filename])
    print(output.decode('utf-8'))

result


Präfektur Kochi Egawasaki 41 2013-08-12
40 Kumagai, Präfektur Saitama.9	2007-08-16
40 Tajimi, Präfektur Gifu.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25

Präfektur Kochi Egawasaki 41 2013-08-12
40 Kumagai, Präfektur Saitama.9	2007-08-16
40 Tajimi, Präfektur Gifu.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25

Process finished with exit code 0

Impressionen: Es ist so etwas wie eine C-Sprache geworden. .. ..

Recommended Posts

[Python] Fordere 100 Schläge heraus! (030-034)
[Python] Fordere 100 Schläge heraus! (006-009)
[Python] Fordere 100 Schläge heraus! (000-005)
[Python] Fordere 100 Schläge heraus! (010-014)
[Python] Fordere 100 Schläge heraus! (025-029)
[Python] Fordere 100 Schläge heraus! (020-024)
Python-Challenge-Tagebuch ①
Fordern Sie 100 Data Science-Schläge heraus
Python
Spartacamp Python 2019 Day2 Challenge
100 Pandas klopfen für Python-Anfänger
Fordern Sie Python3 und Selenium Webdriver heraus
Fordern Sie LOTO 6 mit Python ohne Disziplin heraus
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
# 2 Python-Anfänger fordern AtCoder heraus! ABC085C --Otoshidama
100 Bildverarbeitung mit Python Knock # 2 Graustufen
Python-Grundlagen ⑤
Python-Zusammenfassung
Eingebaute Python
Python-Einschlussnotation
Python-Technik
Python studieren
Python 2.7 Countdown
Python-Memorandum
Python FlowFishMaster
Python-Dienst
Python-Tipps
Python-Funktion ①
Python-Grundlagen
Ufo-> Python (3)
Python-Einschlussnotation
Installieren Sie Python
Python Singleton
Python-Memo
Python Jinja2
100 Bildverarbeitung mit Python Knock # 8 Max Pooling
atCoder 173 Python
[Python] -Funktion
Python-Installation
Python installieren 3.4.3.
Versuchen Sie Python
Python-Memo
Python-Algorithmus
Python2 + word2vec
[Python] -Variablen
Python-Funktionen
Python sys.intern ()
Python-Tutorial
Python-Fraktion
Python Underbar Das ist was
Python-Zusammenfassung
Starten Sie Python
[Python] Sortieren
Hinweis: Python
Python-Grundlagen ③
Python-Protokoll ausgeben
Python-Grundlagen
[Scraping] Python-Scraping
Python-Update (2.6-> 2.7)