[PYTHON] 100 Amateur-Sprachverarbeitungsklopfen: 15

Es ist ein Herausforderungsrekord von 100 Language Processing Knock 2015. Die Umgebung ist Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64-Bit). Klicken Sie hier, um eine Liste der vergangenen Schläge anzuzeigen (http://qiita.com/segavvy/items/fb50ba8097d59475f760).

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.

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.

Der fertige Code:

main.py


# coding: utf-8

fname = 'hightemp.txt'
n = int(input('N--> '))

if n > 0:
	with open(fname) as data_file:
		lines = data_file.readlines()

	for line in lines[-n:]:
		print(line.rstrip())

Ausführungsergebnis:

Terminal


segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ python main.py 
N--> 1
Präfektur Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ python main.py 
N--> 2
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Präfektur Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ python main.py 
N--> 23
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
segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ python main.py 
N--> 24
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

Der UNIX-Befehl wurde vom Shell-Skript bestätigt.

test.sh


#!/bin/sh

#Geben Sie N ein
echo -n "N--> "
read n

#Ausgeschnitten
tail --lines=$n hightemp.txt

Ausführungsergebnis:

Terminal


segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ ./test.sh
N--> 1
Präfektur Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ ./test.sh
N--> 2
39 Tsuruoka, Präfektur Yamagata.9	1978-08-03
Präfektur Aichi Nagoya 39.9	1942-08-02
segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ ./test.sh
N--> 23
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
segavvy@ubuntu:~/Dokument/100 Sprachverarbeitung klopfen 2015/15$ ./test.sh
N--> 24
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

Das Ergebnis war das gleiche.

Außerdem habe ich "wenn n> 0" überprüft, weil ich festgestellt habe, dass bei Eingabe von 0 die Slice-Spezifikation zu "Zeilen [0:]" wurde und alle Zeilen erfolgreich wurden. .. Bei diesem Klopfen denke ich jedoch, dass die Eingabe außerhalb des Bereichs nicht abgefragt werden soll, und es war möglicherweise besser, sie zu ignorieren, als sie auf halbem Weg zu platzieren.   Das ist alles für den 16. Schlag. Wenn Sie Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten.

Recommended Posts

100 Amateur-Sprachverarbeitungsklopfen: 71
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 Amateur-Sprachverarbeitungsklopfen: 60
100 Amateur-Sprachverarbeitungsklopfen: 92
100 Amateur-Sprachverarbeitungsklopfen: 30
100 Amateur-Sprachverarbeitungsklopfen: 06
100 Amateur-Sprachverarbeitungsklopfen: 84
100 Amateur-Sprachverarbeitungsklopfen: 81
100 Amateur-Sprachverarbeitungsklopfen: 33
100 Amateur-Sprachverarbeitungsklopfen: 46
100 Amateur-Sprachverarbeitungsklopfen: 88
100 Amateur-Sprachverarbeitungsklopfen: 89
100 Amateur-Sprachverarbeitungsklopfen: 40
100 Amateur-Sprachverarbeitungsklopfen: 45
100 Amateur-Sprachverarbeitungsklopfen: 43
100 Amateur-Sprachverarbeitungsklopfen: 55
100 Amateur-Sprachverarbeitungsklopfen: 22
100 Amateur-Sprachverarbeitungsklopfen: 61
100 Amateur-Sprachverarbeitungsklopfen: 94
100 Amateur-Sprachverarbeitungsklopfen: 54
100 Amateur-Sprachverarbeitungsklopfen: 04
100 Amateur-Sprachverarbeitungsklopfen: 63
100 Amateur-Sprachverarbeitungsklopfen: 78
100 Amateur-Sprachverarbeitungsklopfen: 12
100 Amateur-Sprachverarbeitungsklopfen: 14
100 Amateur-Sprachverarbeitungsklopfen: 08
100 Amateur-Sprachverarbeitungsklopfen: 19
100 Amateur-Sprachverarbeitungsklopfen: 73
100 Amateur-Sprachverarbeitungsklopfen: 75
100 Amateur-Sprachverarbeitungsklopfen: 98
100 Amateur-Sprachverarbeitungsklopfen: 83
100 Amateur-Sprachverarbeitungsklopfen: 95
100 Amateur-Sprachverarbeitungsklopfen: 32
100 Amateur-Sprachverarbeitungsklopfen: 87
100 Amateur-Sprachverarbeitungsklopfen: 79
100 Amateur-Sprachverarbeitungsklopfen: 23
100 Amateur-Sprachverarbeitungsklopfen: 05
100 Amateur-Sprachverarbeitungsklopfen: 00
100 Amateur-Sprachverarbeitungsklopfen: 02
100 Amateur-Sprachverarbeitungsklopfen: 68
100 Amateur-Sprachverarbeitungsklopfen: 11
100 Amateur-Sprachverarbeitungsklopfen: 74
100 Amateur-Sprachverarbeitungsklopfen: 66
100 Amateur-Sprachverarbeitungsklopfen: 28
100 Amateur-Sprachverarbeitungsklopfen: 64
100 Amateur-Sprachverarbeitungsklopfen: 34
100 Amateur-Sprachverarbeitungsklopfen: 36
100 Amateur-Sprachverarbeitungsklopfen: 77
100 Amateur-Sprachverarbeitungsklopfen: 01
100 Amateur-Sprachverarbeitungsklopfen: 16
100 Amateur-Sprachverarbeitungsklopfen: 27
100 Amateur-Sprachverarbeitungsklopfen: 10
100 Amateur-Sprachverarbeitungsklopfen: 03
100 Amateur-Sprachverarbeitungsklopfen: 82
100 Amateur-Sprachverarbeitungsklopfen: 69
100 Amateur-Sprachverarbeitungsklopfen: 53