Siehe Erster Beitrag
9/24 hinzugefügt
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.
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.
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.
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 ...
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.
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