[PYTHON] 100 Sprachverarbeitung klopft Kapitel 2 (10 ~ 19)

Kapitel 2 Der Code wird jetzt auf github veröffentlicht.

Die in diesem Bereich verwendeten Textdateien lauten wie folgt

hightemp.txt


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 Yamanashi Kofu 40.7	2013-08-10
Präfektur Wakayama Katsuragi 40.6	1994-08-08
Präfektur Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, Präfektur Yamanashi.5	2013-08-10
40 Koshiya, Präfektur Saitama.4	2007-08-16
Präfektur Gunma Tatebayashi 40.3	2007-08-16
Präfektur Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Präfektur Aichi.3	1994-08-05
Präfektur Chiba Ushihisa 40.2	2004-07-20
Präfektur Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Präfektur Ehime.2	1927-07-22
40 Sakata, Präfektur Yamagata.1	1978-08-03
Mino 40, Präfektur Gifu 2007-08-16
Präfektur Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Präfektur Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Präfektur Aichi Nagoya 39.9	1942-08-02

10. Zählen der Anzahl der Zeilen

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

10.py


#Versuchen Sie es mit der Listeneinschlussnotation
num_lines = len([line for line in open('./hightemp.txt')])
print(num_lines)

#Zur Überprüfung der Ergebnisse
import subprocess
output = subprocess.check_output(['wc','-l','./hightemp.txt'])
print(output)

Ergebnis der Codeausführung und Ergebnis der Befehlsausführung

$ python 10.py 
24
b'24 ./hightemp.txt\n'

Wenn Sie sich den Code anderer Leute nach dem Ende von Kapitel 1 ansehen, ist der for-Satz kurz! ich dachte Wenn Sie nachschlagen, gibt es eine Listeneinschlussnotation.

11. 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.

11.py


#Konvertieren Sie Registerkarten in jeder Zeile in Einzelzeichen in Listeneinschlussnotation
space_text = [line.expandtabs(1) for line in open('./hightemp.txt')]
[print(line) for line in space_text]

#Bestätigungsbefehl
# $ cat ./hightemp.txt | tr '\t' ' '
$ python 11.py 
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 Yamanashi Kofu 40.7 2013-08-10

Präfektur Wakayama Katsuragi 40.6 1994-08-08

Präfektur Shizuoka Tenryu 40.6 1994-08-04

40 Katsunuma, Präfektur Yamanashi.5 2013-08-10

40 Koshiya, Präfektur Saitama.4 2007-08-16

Präfektur Gunma Tatebayashi 40.3 2007-08-16

Präfektur Gunma Kamisatomi 40.3 1998-07-04

Ainishi 40, Präfektur Aichi.3 1994-08-05

Präfektur Chiba Ushihisa 40.2 2004-07-20

Präfektur Shizuoka Sakuma 40.2 2001-07-24

40 Uwajima, Präfektur Ehime.2 1927-07-22

40 Sakata, Präfektur Yamagata.1 1978-08-03

Mino 40, Präfektur Gifu 2007-08-16

Präfektur Gunma Maebashi 40 2001-07-24

39 Shigehara, Chiba.9 2013-08-11

39 Hatoyama, Präfektur Saitama.9 1997-07-05

Toyonaka 39, Osaka.9 1994-08-08

Otsuki, Yamanashi 39.9 1990-07-19

39 Tsuruoka, Präfektur Yamagata.9 1978-08-03

Präfektur Aichi Nagoya 39.9 1942-08-02

$ cat ./hightemp.txt | tr '\t' ' '
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 Yamanashi Kofu 40.7 2013-08-10
Präfektur Wakayama Katsuragi 40.6 1994-08-08
Präfektur Shizuoka Tenryu 40.6 1994-08-04
40 Katsunuma, Präfektur Yamanashi.5 2013-08-10
40 Koshiya, Präfektur Saitama.4 2007-08-16
Präfektur Gunma Tatebayashi 40.3 2007-08-16
Präfektur Gunma Kamisatomi 40.3 1998-07-04
Ainishi 40, Präfektur Aichi.3 1994-08-05
Präfektur Chiba Ushihisa 40.2 2004-07-20
Präfektur Shizuoka Sakuma 40.2 2001-07-24
40 Uwajima, Präfektur Ehime.2 1927-07-22
40 Sakata, Präfektur Yamagata.1 1978-08-03
Mino 40, Präfektur Gifu 2007-08-16
Präfektur Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9 2013-08-11
39 Hatoyama, Präfektur Saitama.9 1997-07-05
Toyonaka 39, Osaka.9 1994-08-08
Otsuki, Yamanashi 39.9 1990-07-19
39 Tsuruoka, Präfektur Yamagata.9 1978-08-03
Präfektur Aichi Nagoya 39.9 1942-08-02

Ich mache mir ein bisschen Sorgen, dass es eine Pause gibt

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

Speichern Sie die extrahierte Version nur der ersten Spalte jeder Zeile als col1.txt und die extrahierte Version nur der zweiten Spalte als col2.txt. Verwenden Sie zur Bestätigung den Befehl cut.

12.py


#Schneiden Sie jede Zeile mit Registerkarten in die Listeneinschlussnotation und listen Sie die erste und zweite Spalte auf
col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
col2 = [line.split('\t')[1] for line in open('./hightemp.txt')]

#Datei im Schreibmodus geöffnet
f1 = open('./col1.txt','w')
f2 = open('./col2.txt','w')

#Mit Zeilenvorschubcode verbinden
f1.write('\n'.join(col1))
f2.write('\n'.join(col2))

#Bestätigungsbefehl
# $ cat ./hightemp.txt  | cut -f 1
# $ cat ./hightemp.txt  | cut -f 2
$ python 12.py ← col1.txt,col2.txt wird erstellt
$ cat ./hightemp.txt  | cut -f 1
Präfektur Kochi
Saitama
Präfektur Gifu
Präfektur Yamagata
Präfektur Yamanashi
Präfektur Wakayama
Präfektur Shizuoka
Präfektur Yamanashi
Saitama
Präfektur Gunma
Präfektur Gunma
Präfektur Aichi
Präfektur Chiba
Präfektur Shizuoka
Präfektur Ehime
Präfektur Yamagata
Präfektur Gifu
Präfektur Gunma
Präfektur Chiba
Saitama
Präfektur Osaka
Präfektur Yamanashi
Präfektur Yamagata
Präfektur Aichi

$ cat ./hightemp.txt  | cut -f 2
Egawazaki
Kumagai
Tajimi
Yamagata
Kofu
Katsuragi
Tenryu
Katsunuma
Koshiya
Tatebayashi
Kamisatomi
Ainishi
Ushihisa
Sakuma
Uwajima
Sakata
Mino
Maebashi
Mobara
Hatoyama
Toyonaka
Otsuki
Tsuruoka
Nagoya

col1.txt


Präfektur Kochi
Saitama
Präfektur Gifu
Präfektur Yamagata
Präfektur Yamanashi
Präfektur Wakayama
Präfektur Shizuoka
Präfektur Yamanashi
Saitama
Präfektur Gunma
Präfektur Gunma
Präfektur Aichi
Präfektur Chiba
Präfektur Shizuoka
Präfektur Ehime
Präfektur Yamagata
Präfektur Gifu
Präfektur Gunma
Präfektur Chiba
Saitama
Präfektur Osaka
Präfektur Yamanashi
Präfektur Yamagata
Präfektur Aichi

col2.txt


Egawazaki
Kumagai
Tajimi
Yamagata
Kofu
Katsuragi
Tenryu
Katsunuma
Koshiya
Tatebayashi
Kamisatomi
Ainishi
Ushihisa
Sakuma
Uwajima
Sakata
Mino
Maebashi
Mobara
Hatoyama
Toyonaka
Otsuki
Tsuruoka
Nagoya

13. 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.

13.py


#Lesen Sie vorerst
col1 = [line for line in open('./col1.txt')]
col2 = [line for line in open('./col2.txt')]

new_file = open('./new_file.txt','w')

#Verketten und verarbeiten Sie zwei Listen mit zip
#Verketten Sie zwei Listen mit Registerkarten und löschen Sie den Zeilenvorschubcode als eine Zeile
#Letzte Pause und gehe zur nächsten Zeile
for col in zip(col1, col2):
    new_file.write('\t'.join(col).replace('\n',''))
    new_file.write('\n')

#Bestätigungsbefehl
# $ paste ./col1.txt ./col2.txt
$ python 13.py
$ cat new_file.txt 
Präfektur Kochi Egawazaki
Kumagai, Präfektur Saitama
Tajimi, Präfektur Gifu
Präfektur Yamagata Yamagata
Präfektur Yamanashi Kofu
Präfektur Wakayama Katsuragi
Präfektur Shizuoka Tenryu
Katsunuma, Präfektur Yamanashi
Koshiya, Präfektur Saitama
Präfektur Gunma Tatebayashi
Präfektur Gunma Kamisatomi
Präfektur Aichi Ainishi
Ushihisa, Chiba
Sakuma, Präfektur Shizuoka
Uwajima, Präfektur Ehime
Sakata, Präfektur Yamagata
Mino, Präfektur Gifu
Präfektur Gunma Maebashi
Shigehara, Chiba
Hatoyama, Präfektur Saitama
Toyonaka, Osaka
Präfektur Yamanashi Otsuki
Tsuruoka, Präfektur Yamagata
Präfektur Aichi Nagoya

$ paste ./col1.txt ./col2.txt
Präfektur Kochi Egawazaki
Kumagai, Präfektur Saitama
Tajimi, Präfektur Gifu
Präfektur Yamagata Yamagata
Präfektur Yamanashi Kofu
Präfektur Wakayama Katsuragi
Präfektur Shizuoka Tenryu
Katsunuma, Präfektur Yamanashi
Koshiya, Präfektur Saitama
Präfektur Gunma Tatebayashi
Präfektur Gunma Kamisatomi
Präfektur Aichi Ainishi
Ushihisa, Chiba
Sakuma, Präfektur Shizuoka
Uwajima, Präfektur Ehime
Sakata, Präfektur Yamagata
Mino, Präfektur Gifu
Präfektur Gunma Maebashi
Shigehara, Chiba
Hatoyama, Präfektur Saitama
Toyonaka, Osaka
Präfektur Yamanashi Otsuki
Tsuruoka, Präfektur Yamagata
Präfektur Aichi Nagoya

14. Geben Sie N Zeilen von Anfang an aus

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.

14.py


# input()Akzeptiert die Standardeingabe bei
# int()In Integer-Typ konvertieren mit
input = int(input())

lines = [line for line in open('./hightemp.txt')]

print(''.join(lines[:input]))

#Bestätigungsbefehl
# $ head ./hightemp.txt -n
$ python 14.py 
4 ← Standardeingabe
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

$ head ./hightemp.txt -n 4
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

15. Geben Sie die letzten N Zeilen aus

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

15.py


#Gleiches Gefühl wie 14
input = int(input())

lines = [line for line in open('./hightemp.txt')]

#Slice Bewertung
#Wenn Sie eine negative Zahl angeben, können Sie diese ab dem Ende in der richtigen Reihenfolge behandeln
print(''.join(lines[-input:]))

#Bestätigungsbefehl
# $ tail ./hightemp.txt -n
$ python 15.py 
3 ← Standardeingabe
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Präfektur Aichi Nagoya 39.9	1942-08-02

$ tail ./hightemp.txt -n 3
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Präfektur Aichi Nagoya 39.9	1942-08-02

16. Teilen Sie die Datei in N.

Empfangen Sie die natürliche Zahl N mithilfe von Befehlszeilenargumenten und teilen Sie die Eingabedatei zeilenweise in N. Erzielen Sie die gleiche Verarbeitung mit dem Befehl split.

16.py


input = int(input())

lines = [line for line in open('./hightemp.txt')]

sublist = [''.join(lines[i:i+input]) for i in range(0,len(lines),input)]

#Python Zum Überprüfen der Ergebnisse
for i in sublist:
    print(i)

#Bestätigungsbefehl
# $ split -l N ./hightemp.txt 
$ python 16.py
9 ← Standardeingabe
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 Yamanashi Kofu 40.7	2013-08-10
Präfektur Wakayama Katsuragi 40.6	1994-08-08
Präfektur Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, Präfektur Yamanashi.5	2013-08-10
40 Koshiya, Präfektur Saitama.4	2007-08-16

Präfektur Gunma Tatebayashi 40.3	2007-08-16
Präfektur Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Präfektur Aichi.3	1994-08-05
Präfektur Chiba Ushihisa 40.2	2004-07-20
Präfektur Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Präfektur Ehime.2	1927-07-22
40 Sakata, Präfektur Yamagata.1	1978-08-03
Mino 40, Präfektur Gifu 2007-08-16
Präfektur Gunma Maebashi 40 2001-07-24

39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Präfektur Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Präfektur Aichi Nagoya 39.9	1942-08-02

$ split -l 9 ./hightemp.txt 

$ ls
10.py  12.py  14.py  16.py  18.py  col1.txt  hightemp.txt  xaa  xac
11.py  13.py  15.py  17.py  19.py  col2.txt  new_file.txt  xab

$ cat xaa
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 Yamanashi Kofu 40.7	2013-08-10
Präfektur Wakayama Katsuragi 40.6	1994-08-08
Präfektur Shizuoka Tenryu 40.6	1994-08-04
40 Katsunuma, Präfektur Yamanashi.5	2013-08-10
40 Koshiya, Präfektur Saitama.4	2007-08-16

17. Unterschied in der Zeichenfolge in der ersten Spalte

Suchen Sie den Typ der Zeichenfolge in der ersten Spalte (eine Reihe verschiedener Zeichenfolgen). Verwenden Sie zur Bestätigung die Befehle sort und uniq.

17.py


#Extrahieren Sie die Daten in der ersten Spalte
col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
output = []

#Zu einer anderen Liste hinzufügen, keine doppelten Werte eingeben
for c in col1:
    if c not in output:
        output.append(c)

print(output)

# $ cat hightemp.txt | cut -f 1 | sort -k1  | uniq
$ python 17.py 
['Präfektur Kochi', 'Saitama', 'Präfektur Gifu', 'Präfektur Yamagata', 'Präfektur Yamanashi', 'Präfektur Wakayama', 'Präfektur Shizuoka', 'Präfektur Gunma', 'Präfektur Aichi', 'Präfektur Chiba', 'Präfektur Ehime', 'Präfektur Osaka']

$ cat hightemp.txt | cut -f 1 | sort -k1  | uniq
Präfektur Aichi
Präfektur Ehime
Präfektur Gifu
Präfektur Gunma
Präfektur Kochi
Saitama
Präfektur Yamagata
Präfektur Yamanashi
Präfektur Shizuoka
Präfektur Chiba
Präfektur Osaka
Präfektur Wakayama

18. Sortieren Sie jede Zeile in absteigender Reihenfolge der Zahlen in der dritten Spalte

Ordnen Sie jede Zeile in umgekehrter Reihenfolge der Zahlen in der dritten Spalte an (Hinweis: Ordnen Sie den Inhalt jeder Zeile neu an, ohne ihn zu ändern). Verwenden Sie den Befehl sort zur Bestätigung (dieses Problem muss nicht mit dem Ergebnis der Ausführung des Befehls übereinstimmen).

18.py


#Nehmen Sie eine Liste in der dritten Spalte und eine Liste für jede Zeile
values = [line.split('\t')[2] for line in open('./hightemp.txt')]
keys = [line for line in open('./hightemp.txt')]

dic = dict(zip(keys,values))

#Sortieren Sie nach dem Wert in der dritten Spalte
sort_dic = sorted(dic.items(), key=lambda x:x[1])

for k,v in sort_dic:
    print(k)

#Bestätigungsbefehl
# $ cat hightemp.txt |  sort -k3
$ python 18.py 
39 Shigehara, Chiba.9	2013-08-11

39 Hatoyama, Präfektur Saitama.9	1997-07-05

Toyonaka 39, Osaka.9	1994-08-08

Otsuki, Yamanashi 39.9	1990-07-19

39 Tsuruoka, Präfektur Yamagata.9	1978-08-03

Präfektur Aichi Nagoya 39.9	1942-08-02

Mino 40, Präfektur Gifu 2007-08-16

Präfektur Gunma Maebashi 40 2001-07-24

40 Sakata, Präfektur Yamagata.1	1978-08-03

Präfektur Chiba Ushihisa 40.2	2004-07-20

Präfektur Shizuoka Sakuma 40.2	2001-07-24

40 Uwajima, Präfektur Ehime.2	1927-07-22

Präfektur Gunma Tatebayashi 40.3	2007-08-16

Präfektur Gunma Kamisatomi 40.3	1998-07-04

Ainishi 40, Präfektur Aichi.3	1994-08-05

40 Koshiya, Präfektur Saitama.4	2007-08-16

40 Katsunuma, Präfektur Yamanashi.5	2013-08-10

Präfektur Wakayama Katsuragi 40.6	1994-08-08

Präfektur Shizuoka Tenryu 40.6	1994-08-04

Präfektur Yamanashi Kofu 40.7	2013-08-10

Yamagata 40 Yamagata.8	1933-07-25

40 Kumagai, Präfektur Saitama.9	2007-08-16

40 Tajimi, Präfektur Gifu.9	2007-08-16

Präfektur Kochi Egawasaki 41 2013-08-12

$ cat hightemp.txt |  sort -k3
Präfektur Aichi Nagoya 39.9	1942-08-02
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Otsuki, Yamanashi 39.9	1990-07-19
Toyonaka 39, Osaka.9	1994-08-08
39 Hatoyama, Präfektur Saitama.9	1997-07-05
39 Shigehara, Chiba.9	2013-08-11
Präfektur Gunma Maebashi 40 2001-07-24
Mino 40, Präfektur Gifu 2007-08-16
40 Sakata, Präfektur Yamagata.1	1978-08-03
40 Uwajima, Präfektur Ehime.2	1927-07-22
Präfektur Shizuoka Sakuma 40.2	2001-07-24
Präfektur Chiba Ushihisa 40.2	2004-07-20
Ainishi 40, Präfektur Aichi.3	1994-08-05
Präfektur Gunma Kamisatomi 40.3	1998-07-04
Präfektur Gunma Tatebayashi 40.3	2007-08-16
40 Koshiya, Präfektur Saitama.4	2007-08-16
40 Katsunuma, Präfektur Yamanashi.5	2013-08-10
Präfektur Shizuoka Tenryu 40.6	1994-08-04
Präfektur Wakayama Katsuragi 40.6	1994-08-08
Präfektur Yamanashi Kofu 40.7	2013-08-10
Yamagata 40 Yamagata.8	1933-07-25
40 Tajimi, Präfektur Gifu.9	2007-08-16
40 Kumagai, Präfektur Saitama.9	2007-08-16
Präfektur Kochi Egawasaki 41 2013-08-12

19. Ermitteln Sie die Häufigkeit des Auftretens der ersten Spalte jeder Zeile und ordnen Sie sie in absteigender Reihenfolge der Häufigkeit des Auftretens an.

Ermitteln Sie die Häufigkeit des Auftretens der ersten Spalte jeder Zeile und zeigen Sie sie in absteigender Reihenfolge an. Verwenden Sie zur Bestätigung die Befehle cut, uniq und sort.

19.py


from collections import Counter

#Extrahieren Sie die Daten in der ersten Spalte
col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]

# collections.Zähler verwenden
counter = Counter(col1)
for word,count in counter.most_common():
    print(word+', '+str(count))

#Bestätigungsbefehl
# $ cat ./hightemp.txt  | cut -f 1 | sort | uniq -c | sort -r
$ python 19.py 
Saitama, 3
Präfektur Yamagata, 3
Präfektur Yamanashi, 3
Präfektur Gunma, 3
Präfektur Gifu, 2
Präfektur Shizuoka, 2
Präfektur Aichi, 2
Präfektur Chiba, 2
Präfektur Kochi, 1
Präfektur Wakayama, 1
Präfektur Ehime, 1
Präfektur Osaka, 1

$ cat ./hightemp.txt  | cut -f 1 | sort | uniq -c | sort -r
3 Präfektur Yamanashi
3 Präfektur Yamagata
3 Präfektur Saitama
3 Präfektur Gunma
2 Chiba
2 Präfektur Shizuoka
2 Präfektur Gifu
2 Präfektur Aichi
1 Präfektur Wakayama
1 Präfektur Osaka
1 Präfektur Kochi
1 Präfektur Ehime

Korrektur 2017/03/18

Korrigiert, weil ich einen Kommentar erhalten habe

10.py


#Versuchen Sie es mit der Listeneinschlussnotation
# num_lines = len(list(open('./hightemp.txt')))

#Notation zur Einbeziehung des Generators
#Lesen Sie Zeile für Zeile und zählen Sie die Anzahl der Zeilen
#Die Speichernutzung wird reduziert, da die Liste nicht wie die Listeneinschlussnotation erstellt wird.
num_lines = sum(1 for line in open('./hightemp.txt'))
print(num_lines)

In der Listeneinschlussnotation werden alle Dateidaten vorübergehend im Speicher gespeichert. Weil Sie am Ende vergeblich eine Liste erstellen Es scheint besser, die Generatoreinschlussnotation so oft wie möglich zu verwenden

11.py


#Konvertieren Sie Registerkarten in jeder Zeile in Einzelzeichen in Listeneinschlussnotation
space_text = [line.expandtabs(1) for line in open('./hightemp.txt')]

#In der Druckfunktion von python3 ist end das zweite Argument=""damit""Kann mit den Zeichen in umgehen
# end=""Dann gibt es keine Zeilenumbrüche
print(''.join(space_text),end='')

Wenn Sie im zweiten Argument der Druckfunktion end = "" verwenden Sie können das abschließende Zeichen festlegen Beseitigt seltsame Zeilenumbrüche

12.py


#Schneiden Sie jede Zeile mit Registerkarten in die Listeneinschlussnotation und listen Sie die erste und zweite Spalte auf
# col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
# col2 = [line.split('\t')[1] for line in open('./hightemp.txt')]

#Notation zur Einbeziehung des Generators
col1 = '\n'.join(line.split('\t')[0] for line in open('./hightemp.txt'))
col2 = '\n'.join(line.split('\t')[1] for line in open('./hightemp.txt'))

#Datei im Schreibmodus geöffnet
f1 = open('./col1.txt','w')
f2 = open('./col2.txt','w')

#Mit Zeilenvorschubcode verbinden
f1.write(col1)
f2.write(col2)

14.py


# input()Akzeptiert die Standardeingabe bei
# int()In Integer-Typ konvertieren mit
input_num = int(input())

lines = [line for line in open('./hightemp.txt')]

print(''.join(lines[:input_num]))

15.py


#Gleiches Gefühl wie 14
input_num = int(input())

lines = [line for line in open('./hightemp.txt')]

#Slice Bewertung
#Wenn Sie eine negative Zahl angeben, können Sie diese ab dem Ende in der richtigen Reihenfolge behandeln
print(''.join(lines[-input_num:]))

16.py


input_num = int(input())

lines = [line for line in open('./hightemp.txt')]

sublist = [''.join(lines[i:i+input_num]) for i in range(0,len(lines),input_num)]

#Python Zum Überprüfen der Ergebnisse
for i in sublist:
    print(i)

Wenn input = int (input ()), kann die Eingabefunktion danach nicht mehr verwendet werden. Ändern Sie den Variablennamen in input_num

18.py


#Nehmen Sie eine Liste in der dritten Spalte und eine Liste für jede Zeile
values = [line.split('\t')[2] for line in open('./hightemp.txt')]
keys = [line for line in open('./hightemp.txt')]

dic = dict(zip(keys,values))

#Sortieren Sie nach dem Wert in der dritten Spalte
sort_dic = sorted(dic.items(), key=lambda x:x[1])

for k,v in sort_dic:
    print(k,end='')

Ich habe seltsame Zeilenumbrüche mit print gelöscht (**, end = '')

19.py


from collections import Counter

#Extrahieren Sie die Daten in der ersten Spalte
# col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
# collections.Zähler verwenden
# counter = Counter(col1)

#Ist es besser, die Generatoreinschlussnotation in einer Zeile zu verwenden?
counter = Counter(line.split('\t')[0] for line in open('./hightemp.txt'))
for word,count in counter.most_common():
    print(word+', '+str(count))

Mit Ausnahme der Verarbeitung in der Liste nach dem Lesen der gesamten Datei Alle wurden korrigiert, um die Generator-Notation einzuschließen

Recommended Posts

100 Sprachverarbeitungsklopfen ~ Kapitel 1
100 Sprachverarbeitung klopft Kapitel 2 (10 ~ 19)
100 Sprachverarbeitungsklopfen 03 ~ 05
100 Sprachverarbeitungsklopfen (2020): 40
100 Sprachverarbeitungsklopfen (2020): 32
100 Sprachverarbeitungsklopfen (2020): 47
100 Sprachverarbeitungsklopfen (2020): 22
100 Sprachverarbeitungsklopfen (2020): 26
100 Sprachverarbeitungsklopfen (2020): 34
100 Sprachverarbeitungsklopfen (2020): 42
100 Sprachverarbeitungsklopfen (2020): 29
100 Sprachverarbeitungsklopfen (2020): 49
100 Sprachverarbeitungsklopfen 06 ~ 09
100 Sprachverarbeitungsklopfen (2020): 43
100 Sprachverarbeitungsklopfen (2020): 24
100 Sprachverarbeitungsklopfen (2020): 45
100 Sprachverarbeitungsklopfen (2020): 10-19
100 Sprachverarbeitungsklopfen (2020): 30
100 Sprachverarbeitungsklopfen (2020): 00-09
100 Sprachverarbeitungsklopfen (2020): 31
100 Sprachverarbeitungsklopfen (2020): 48
100 Sprachverarbeitungsklopfen (2020): 44
100 Sprachverarbeitungsklopfen (2020): 41
100 Sprachverarbeitungsklopfen (2020): 37
100 Sprachverarbeitungsklopfen (2020): 25
100 Sprachverarbeitungsklopfen (2020): 23
100 Sprachverarbeitungsklopfen (2020): 33
100 Sprachverarbeitungsklopfen (2020): 20
100 Sprachverarbeitungsklopfen (2020): 27
100 Sprachverarbeitungsklopfen (2020): 46
100 Sprachverarbeitungsklopfen (2020): 21
100 Sprachverarbeitungsklopfen (2020): 36
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 4 Kommentar
[Sprachverarbeitung 100 Schläge 2020] Kapitel 6: Maschinelles Lernen
100 Sprachverarbeitungsklopfen 2020: Kapitel 4 (morphologische Analyse)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 5: Abhängigkeitsanalyse
[Sprachverarbeitung 100 Schläge 2020] Kapitel 1: Vorbereitende Bewegung
[Sprachverarbeitung 100 Schläge 2020] Kapitel 7: Wortvektor
100 Sprachverarbeitung klopfen 2020: Kapitel 3 (regulärer Ausdruck)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 8: Neuronales Netz
[Sprachverarbeitung 100 Schläge 2020] Kapitel 2: UNIX-Befehle
[Sprachverarbeitung 100 Schläge 2020] Kapitel 9: RNN, CNN
[Sprachverarbeitung 100 Schläge 2020] Kapitel 4: Morphologische Analyse
100 Amateur-Sprachverarbeitungsklopfen: 41
100 Amateur-Sprachverarbeitungsklopfen: 56
100 Amateur-Sprachverarbeitungsklopfen: 24
100 Amateur-Sprachverarbeitungsklopfen: 50
100 Amateur-Sprachverarbeitungsklopfen: 59
100 Amateur-Sprachverarbeitungsklopfen: 70
100 Amateur-Sprachverarbeitungsklopfen: 62
100 Sprachverarbeitung Knock 2020 Kapitel 1
100 Amateur-Sprachverarbeitungsklopfen: 92
100 Amateur-Sprachverarbeitungsklopfen: 06
100 Amateur-Sprachverarbeitungsklopfen: 81
100 Amateur-Sprachverarbeitungsklopfen: 46
100 Amateur-Sprachverarbeitungsklopfen: 88
100 Amateur-Sprachverarbeitungsklopfen: 89
100 Amateur-Sprachverarbeitungsklopfen: 43
100 Amateur-Sprachverarbeitungsklopfen: 55
100 Amateur-Sprachverarbeitungsklopfen: 94
100 Amateur-Sprachverarbeitungsklopfen: 54