[PYTHON] 100 Amateur-Sprachverarbeitungsklopfen: 11

Es ist ein Herausforderungsrekord von 100 Sprachverarbeitungsklopfen 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.

11. Ersetzen Sie die Registerkarten durch Leerzeichen

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

Der fertige Code:

main.py


# coding: utf-8

fname = 'hightemp.txt'
with open(fname) as data_file:
	for line in data_file:
		print(line.replace('\t', ' '), end='')

Ausführungsergebnis:

Terminal


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

#sed s Befehl: s/Suchmuster/Ersatzschnur/g (alle ersetzen)
sed 's/\t/ /g' hightemp.txt

test2.sh


#!/bin/sh

#tr Befehl
tr '\t' ' ' < hightemp.txt

test3.sh


#!/bin/sh

#Befehl erweitern
expand --tabs=1 hightemp.txt

Ausführungsergebnis:

Terminal


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.

Stream-Verarbeitung

Da die Zieldatei diesmal klein ist, ist es möglicherweise möglich, alles auf einmal zu lesen und zu ersetzen. Da jedoch sed oben im Befehl zur Bestätigung aufgeführt ist, dachte ich, dass ich möchte, dass Sie die Stream-Verarbeitung als Absicht der Frage lernen. Daher wird es implementiert, indem es nach und nach gelesen wird.

Befehl sed

Der Befehl sed ist ziemlich kompliziert und ich konnte ihn mit man sed überhaupt nicht verstehen, aber Wikipedia-Erklärung: sed (Computer) Ich habe einen Überblick mit. Der diesmal verwendete Befehl "sed" gibt das Suchmuster mit einem regulären Ausdruck an, aber das "\ t", das die Registerkarte angibt, entspricht dem regulären Ausdruck, sodass ich ihn ersetzen kann, ohne den regulären Ausdruck zu kennen. Reguläre Ausdrücke sind das Thema von Kapitel 3 dieses Klopfens, also werden wir dort lernen.

Befehl tr

Befehl expand

Das ist alles für den 12. Schlag. Wenn Sie Fehler haben, würde ich mich freuen, wenn Sie darauf hinweisen könnten.

Recommended Posts

100 Amateur-Sprachverarbeitungsklopfen: 41
100 Amateur-Sprachverarbeitungsklopfen: 71
100 Amateur-Sprachverarbeitungsklopfen: 56
100 Amateur-Sprachverarbeitungsklopfen: 50
100 Amateur-Sprachverarbeitungsklopfen: 59
100 Amateur-Sprachverarbeitungsklopfen: 70
100 Amateur-Sprachverarbeitungsklopfen: 62
100 Amateur-Sprachverarbeitungsklopfen: 60
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: 42
100 Amateur-Sprachverarbeitungsklopfen: 19
100 Amateur-Sprachverarbeitungsklopfen: 73
100 Amateur-Sprachverarbeitungsklopfen: 75
100 Amateur-Sprachverarbeitungsklopfen: 98
100 Amateur-Sprachverarbeitungsklopfen: 32
100 Amateur-Sprachverarbeitungsklopfen: 96
100 Amateur-Sprachverarbeitungsklopfen: 87
100 Amateur-Sprachverarbeitungsklopfen: 72
100 Amateur-Sprachverarbeitungsklopfen: 79
100 Amateur-Sprachverarbeitungsklopfen: 23
100 Amateur-Sprachverarbeitungsklopfen: 00
100 Amateur-Sprachverarbeitungsklopfen: 02
100 Amateur-Sprachverarbeitungsklopfen: 37
100 Amateur-Sprachverarbeitungsklopfen: 21
100 Amateur-Sprachverarbeitungsklopfen: 68
100 Amateur-Sprachverarbeitungsklopfen: 11
100 Amateur-Sprachverarbeitungsklopfen: 90
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