Réhabilitation des compétences Python et PNL à partir de "100 Language Processing Knock 2015" (Chapitre 2 premier semestre)

Cela fait presque un mois depuis la dernière mise à jour ... C'est un bon crâne rasé de trois jours.

Comme le titre du chapitre l'indique, cela se fait souvent à l'aide de commandes UNIX, donc Il peut être un peu gênant d'écrire en python.

Tout d'abord, téléchargez l'ensemble de données ...

Chapitre 2: Principes de base des commandes UNIX

10. Compter le nombre de lignes

Comptez le nombre de lignes. Utilisez la commande wc pour confirmation.

python


filename = 'hightemp.txt'
f = open(filename, 'r')
print sum([1 for l in f])
#>>> 24

Il semble y avoir différentes façons de procéder ... http://551sornwmc.blog109.fc2.com/blog-entry-387.html http://stackoverflow.com/questions/845058/how-to-get-line-count-cheaply-in-python

En termes d'utilisation de la mémoire et de vitesse d'exécution, il semble préférable d'utiliser ce fichier mappé en mémoire.

python


# using memory mapped file
import mmap
def mapcount(filename):
    f = open(filename, "r+")
    buf = mmap.mmap(f.fileno(), 0)
    lines = 0
    readline = buf.readline
    while readline():
        lines += 1
    return lines

Cliquez ici pour confirmation avec les commandes UNIX.

python


wc -l hightemp.txt
#>>> 24

11. Remplacez les onglets par des espaces

Remplacez chaque onglet par un espace. Utilisez la commande sed, la commande tr ou la commande expand pour confirmation.

python


#import re

filename = 'hightemp.txt'
f = open(filename, 'r')
lines = f.readlines()
for line in lines:
    #line_replaced =  re.sub(r'\t', r'\s', line)
    line_replaced = line.expandtabs(1)
    print line_replaced,

Il existe des expandtabs.

Cliquez ici pour confirmation avec les commandes UNIX.

python


cat hightemp.txt | tr '\t' ','

Cette ↑ semble être la plus douce.

python


sed -e s/'\t'/'\s'/g hightemp.txt
#Cela ne fonctionne pas sur Mac, donc encore
sed -e s/$'\t'/$'\s'/g hightemp.txt
#cette?

http://mattintosh.hatenablog.com/entry/2013/01/16/143323

BSD sed inclus dans Mac OS X etc. ne se développe pas \ t dans le script vers des onglets comme echo et printf.

Oh...

12. Enregistrez la première colonne dans col1.txt et la deuxième colonne dans col2.txt

Enregistrez uniquement la première colonne de chaque ligne sous col1.txt et la deuxième colonne sous col2.txt. Utilisez la commande cut pour confirmation.

python


filename = 'hightemp.txt'
filename_col1 = 'col1.txt'
filename_col2 = 'col2.txt'

f = open(filename, 'r')
f_col1 = open(filename_col1, 'w')
f_col2 = open(filename_col2, 'w')

lines = f.readlines()

content_col1 = [line.split()[0] + '\n' for line in lines]
content_col2 = [line.split()[1] + '\n' for line in lines]

f_col1.writelines(content_col1)
f_col2.writelines(content_col2)

f_col1.close()
f_col2.close()

Une chose à noter est que la méthode writelines n'inclut pas de saut de ligne. L'avez-vous ajouté vous-même?

Cliquez ici pour confirmation avec les commandes UNIX. Wow, c'est si facile que j'ai la nausée.

python


cut -f1 hightemp.txt > col1.txt
cut -f2 hightemp.txt > col2.txt

13. Fusionnez col1.txt et col2.txt

Combinez les col1.txt et col2.txt créés en 12 pour créer un fichier texte dans lequel les première et deuxième colonnes du fichier d'origine sont disposées en tabulation. Utilisez la commande coller pour confirmation.

python


filename_col1 = 'col1.txt'
filename_col2 = 'col2.txt'
filename_col1_col2 = 'col1_col2.txt'

f_col1 = open(filename_col1, 'r')
f_col2 = open(filename_col2, 'r')
f_col1_col2 = open(filename_col1_col2, 'w')

lines_1 = f_col1.readlines()
lines_2 = f_col2.readlines()

content = [line1 + '\t' + line2 + '\n' for line1, line2 in zip(lines_1, lines_2)]

f_col1_col2.writelines(content)
f_col1_col2.close()    

f_col1.close()    
f_col2.close()    

Cliquez ici pour confirmation avec les commandes UNIX. C'était trop facile et j'ai vomi.

python


paste col1.txt col2.txt > col1_col2.txt

14. Sortie de N lignes depuis le début

Recevoir le nombre naturel N au moyen d'un argument de ligne de commande et afficher uniquement les N premières lignes de l'entrée. Utilisez la commande head pour confirmation.

knock014.py


# -*- coding: utf-8 -*-

import sys
import argparse

parser = argparse.ArgumentParser(description='Head command. Accepts an integer and a file name.')

#Nombre de lignes
parser.add_argument(
	'-l', '--line',
	type = int,
	dest = 'line',
	default = 10,
	help = 'Équivaut au nombre de lignes spécifié par la commande head'
)

#nom de fichier
parser.add_argument(
    '-f', '--filename',
    type = str,						#Spécifiez le type de valeur à recevoir
    dest = 'filename',     			#Enregistrer le nom de la variable de destination
    required = True,    			#Article requis
    help = 'Nom de fichier donné en entrée'	# --Déclaration à afficher au moment de l'aide
)

args = parser.parse_args()
N = args.line
filename = args.filename

#Afficher les N premières lignes
f = open(filename)
for x in xrange(N):
	print f.next().strip()
f.close()

Lorsque vous faites ce qui précède.

python


python knock014.py -l 3 -f hightemp.txt
# >>>Préfecture de Kochi Egawasaki 41 2013-08-12
# >>>40 Kumagai, Préfecture de Saitama.9	2007-08-16
# >>>40 Tajimi, Préfecture de Gifu.9	2007-08-16

python knock014.py -l 3 -f hightemp.txt
# >>>Préfecture de Kochi Egawasaki 41 2013-08-12
# >>>40 Kumagai, Préfecture de Saitama.9	2007-08-16
# >>>40 Tajimi, Préfecture de Gifu.9	2007-08-16
# >>>Yamagata 40 Yamagata.8	1933-07-25
# >>>Préfecture de Yamanashi Kofu 40.7	2013-08-10
# >>>Préfecture de Wakayama Katsuragi 40.6	1994-08-08
# >>>Préfecture de Shizuoka Tenryu 40.6	1994-08-04
# >>>40 Katsunuma, préfecture de Yamanashi.5	2013-08-10
# >>>40 Koshiya, Préfecture de Saitama.4	2007-08-16
# >>>Préfecture de Gunma Tatebayashi 40.3	2007-08-16

Cliquez ici pour confirmation avec les commandes UNIX.

python


head -3 hightemp.txt

head hightemp.txt

15. Sortez les N dernières lignes

Recevez le nombre naturel N au moyen d'un argument de ligne de commande et n'affichez que les N dernières lignes de l'entrée. Utilisez la commande tail pour confirmation.

knock015.py


# -*- coding: utf-8 -*-

import sys
import argparse

parser = argparse.ArgumentParser(description='Tail command. Accepts an integer and a file name.')

#Nombre de lignes
parser.add_argument(
	'-l', '--line',
	type = int,
	dest = 'line',
	default = 10,
	help = 'Équivaut au nombre de lignes spécifié par la commande tail'
)

#nom de fichier
parser.add_argument(
    '-f', '--filename',
    type = str,						#Spécifiez le type de valeur à recevoir
    dest = 'filename',     			#Enregistrer le nom de la variable de destination
    required = True,    			#Article requis
    help = 'Nom de fichier donné en entrée'	# --Déclaration à afficher au moment de l'aide
)

args = parser.parse_args()
N = args.line
filename = args.filename

#Afficher les N dernières lignes
f = open(filename)
lines = f.readlines()
M = len(lines)

for i, line in enumerate(lines):
	if i+N >= M:
		#print i
		print line.strip()

f.close()

En gros, je viens de changer le dernier processus de 14. Cliquez ici pour confirmation avec les commandes UNIX.

python


tail -3 hightemp.txt

tail hightemp.txt

Recommended Posts

Réhabilitation des compétences Python et PNL à partir de "100 Language Processing Knock 2015" (Chapitre 2 premier semestre)
Réhabilitation des compétences Python et PNL à partir de «Knock 100 Language Processing 2015» (chapitre 2 deuxième semestre)
Réhabilitation des compétences Python et PNL à partir de "100 Language Processing Knock 2015" (Chapitre 1)
100 traitements de langage avec Python
100 traitements de langage avec Python (chapitre 3)
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
100 coups de traitement du langage avec Python 2015
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Programmer newcomer "100 language processing knock 2020"] Résoudre le chapitre 2 [Première moitié: 10 ~ 15]
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
100 Language Processing Knock Chapitre 1 en Python
100 points de traitement du langage naturel Chapitre 2 Bases des commandes UNIX (première moitié)
Après avoir effectué 100 traitements de langage en 2015, j'ai acquis beaucoup de compétences de base en Python Chapitre 1
100 Language Processing Knock Chapitre 1 par Python
J'ai fait 100 traitements linguistiques Knock 2020 avec GiNZA v3.1 Chapitre 4
100 Language Processing Knock 2020 Chapitre 1
100 Traitement du langage Knock Chapitre 1
100 Language Processing Knock 2020 Chapitre 3
100 Language Processing Knock 2020 Chapitre 2
100 traitements du langage naturel frappent Chapitre 4 Analyse morphologique (première moitié)
100 coups au traitement du langage naturel Chapitre 1 Mouvement préparatoire (première moitié)
100 traitements du langage naturel frappent Chapitre 3 Expressions régulières (première moitié)
[Chapitre 6] Introduction à scicit-learn avec 100 coups de traitement du langage
100 traitements du langage naturel frappent Chapitre 6 Traitement de texte anglais (première moitié)
Apprenez facilement 100 traitements linguistiques Knock 2020 avec "Google Colaboratory"
100 points de traitement du langage naturel Chapitre 5 Analyse des dépendances (premier semestre)
100 points de traitement du langage naturel Chapitre 2 Bases des commandes UNIX (deuxième moitié)
100 traitement de la langue knock-42: Affichage de la phrase de la personne concernée et de la personne concernée
100 langage de traitement knock-70 (en utilisant Stanford NLP): Obtention et formatage des données
100 Language Processing Knock 2020 Chapitre 2: Commandes UNIX
100 Language Processing Knock 2015 Chapitre 5 Analyse des dépendances (40-49)
Comparaison de vitesse du traitement de texte intégral de Wiktionary avec F # et Python
100 Language Processing Knock 2020 Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 9: RNN, CNN
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 3
100 Language Processing Knock: Chapitre 1 Mouvement préparatoire
100 Language Processing Knock 2020 Chapitre 6: Apprentissage automatique
100 Traitement du langage Knock Chapitre 4: Analyse morphologique
100 Language Processing Knock 2020 Chapitre 10: Traduction automatique (90-98)
100 Language Processing Knock 2020 Chapitre 5: Analyse des dépendances
10 fonctions du "langage avec batterie" python
100 Traitement du langage Knock 2020 Chapitre 7: Vecteur de mots
100 Language Processing Knock 2020 Chapitre 8: Neural Net
100 traitement du langage knock-59: analyse de la formule S
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 1
100 Language Processing Knock 2020 Chapitre 1: Mouvement préparatoire
Coexistence de Python2 et 3 avec CircleCI (1.0)
100 Language Processing Knock 2020 Chapitre 3: Expressions régulières
100 Language Processing Knock 2015 Chapitre 4 Analyse morphologique (30-39)
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 2
J'ai essayé 100 traitements linguistiques Knock 2020: Chapitre 4
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
J'ai 0 ans d'expérience en programmation et je défie le traitement des données avec python
Bases du traitement d'images binarisées par Python