C'est un record de défi de 100 langues de traitement knock 2015. L'environnement est Ubuntu 16.04 LTS + Python 3.5.2 : : Anaconda 4.1.1 (64 bits). Cliquez ici pour une liste des coups passés (http://qiita.com/segavvy/items/fb50ba8097d59475f760).
hightemp.txt est un fichier qui stocke l'enregistrement de la température la plus élevée au Japon dans le format délimité par des tabulations de «préfecture», «point», «℃» et «jour». Créez un programme qui effectue le traitement suivant et exécutez hightemp.txt en tant que fichier d'entrée. De plus, exécutez le même processus avec une commande UNIX et vérifiez le résultat de l'exécution du programme.
Recherchez le type de chaîne de caractères dans la première colonne (un ensemble de chaînes de caractères différentes). Utilisez les commandes sort et uniq pour confirmation.
main.py
# coding: utf-8
fname = 'hightemp.txt'
with open(fname) as data_file:
set_ken = set()
for line in data_file:
cols = line.split('\t')
set_ken.add(cols[0])
for n in set_ken:
print(n)
Résultat d'exécution 1
Préfecture de Yamagata
Préfecture de Wakayama
Préfecture de Gifu
Préfecture d'Osaka
Préfecture d'Ehime
Saitama
Préfecture d'Aichi
Préfecture de Kochi
Préfecture de Gunma
Préfecture de Chiba
Préfecture de Yamanashi
Préfecture de Shizuoka
Résultat d'exécution 2
Préfecture de Gifu
Préfecture de Yamagata
Préfecture de Shizuoka
Préfecture d'Aichi
Préfecture d'Osaka
Préfecture de Kochi
Préfecture de Gunma
Préfecture de Chiba
Préfecture de Yamanashi
Préfecture d'Ehime
Préfecture de Wakayama
Saitama
Quand je l'ai exécuté deux fois, l'ordre a changé. Ceci est dû au fait que le hachage est randomisé comme décrit dans Option -R de la ligne de commande. Je pense.
test.sh
#!/bin/sh
#Découpez la première colonne, triez, déduplication
cut --fields=1 hightemp.txt | sort | uniq > result_test.txt
#Exécuter dans le programme Python, trier pour comparaison par diff
python main.py | sort > result.txt
#Vérifiez le résultat
diff --report-identical-files result.txt result_test.txt
Terminal
segavvy@ubuntu:~/document/100 traitement du langage Knock 2015/17$ ./test.sh
Résultat du fichier.txt et résultat_test.txt est le même
C'est tout pour le 18e coup. Si vous avez des erreurs, j'apprécierais que vous les signaliez.
Recommended Posts