100 coups de traitement du langage http://www.cl.ecei.tohoku.ac.jp/nlp100/ Du chapitre 2 10 au 19
Comptez le nombre de lignes. Utilisez la commande wc pour confirmation.
Bash
$ wc -l hightemp.txt
Python
print(len(open('hightemp.txt').readlines()))
Remplacez chaque onglet par un espace. Utilisez la commande sed, la commande tr ou la commande expand pour confirmation.
Bash
$ sed 's/\t/ /g' hightemp.txt
Python
r = open('hightemp.txt').readlines()
print(''.join([l.replace('\t', ' ') for l in r]))
Ce que vous avez commenté
print(open('hightemp.txt').read().replace('\t', ' '))
Enregistrez la version extraite de la première colonne de chaque ligne uniquement sous col1.txt et la version extraite de la deuxième colonne uniquement sous col2.txt. Utilisez la commande cut pour confirmation.
Bash
$ cut -f 1 hightemp.txt > col1.txt
$ cut -f 2 hightemp.txt > col2.txt
Python
r = open('hightemp.txt').readlines()
with open('col1.txt', 'w') as c1, open('col2.txt', 'w') as c2:
for l in r:
s = l.split('\t')
c1.write(s[0]+'\n')
c2.write(s[1]+'\n')
Combinez col1.txt et col2.txt créés dans 12 et créez un fichier texte dans lequel les première et deuxième colonnes du fichier d'origine sont organisées par des délimiteurs de tabulation. Utilisez la commande coller pour confirmation.
Bash
$ paste col1.txt col2.txt
Python
c1 = open('col1.txt').readlines()
c2 = open('col2.txt').readlines()
for s1, s2 in zip(c1, c2):
print(s1.rstrip() + '\t' + s2.rstrip())
Recevez le nombre naturel N au moyen d'un argument de ligne de commande, et affichez uniquement les N premières lignes de l'entrée. Utilisez la commande head pour confirmation.
Bash
$ head -n 5 hightemp.txt
Python
import sys
n = int(sys.argv[1])
r = open('hightemp.txt').readlines()
print(''.join(r[:n]))
Recevez le nombre naturel N au moyen d'un argument de ligne de commande, et affichez uniquement les N dernières lignes de l'entrée. Utilisez la commande tail pour confirmation.
Bash
$ tail -n 5 hightemp.txt
Python
import sys
n = int(sys.argv[1])
r = open('hightemp.txt').readlines()
print(''.join(r[-n:]))
Recevez le nombre naturel N par des moyens tels que des arguments de ligne de commande et divisez le fichier d'entrée en N ligne par ligne. Réalisez le même traitement avec la commande de fractionnement.
Bash
$ split -l 5 hightemp.txt
Python
import sys
import math
n = int(sys.argv[1])
r = open('hightemp.txt').readlines()
for i in range(n):
l = math.ceil((len(r)+1) / n)
with open('split0' + str(i) + '.txt', 'w') as f:
f.write(''.join(r[l*i:l*i+l-1]))
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.
Bash
$ cut -f 1 hightemp.txt | sort | uniq
Python
r = open('hightemp.txt').readlines()
print('\n'.join(set((x.split('\t')[0] for x in r))))
Disposez chaque ligne dans l'ordre inverse des nombres de la troisième colonne (Remarque: réorganisez le contenu de chaque ligne sans les changer). Utilisez la commande sort pour confirmation (ce problème ne doit pas nécessairement correspondre au résultat de l'exécution de la commande).
Bash
$ sort -r -n -k 3,3 hightemp.txt
Python
r = open('hightemp.txt').readlines()
r.sort(key=lambda x: x.split('\t')[2], reverse=True)
print(''.join(r))
Trouvez la fréquence d'apparition de la première colonne de chaque ligne et affichez-les par ordre décroissant. Utilisez les commandes cut, uniq, sort pour confirmation
Bash
$ cut -f 1 hightemp.txt | sort | uniq -c | sort -r
Python
r = open('hightemp.txt').readlines()
r = list(map(lambda s: s.split()[0], r))
c = {s: r.count(s) for s in r}
c = sorted(c.items(), key=lambda x: x[1], reverse=True)
print('\n'.join(map(lambda s: str(s[1]) + ' ' + s[0], c)))
Ce que vous avez commenté
r = [s.split('\t')[0] for s in open('hightemp.txt')]
c = {k:r.count(k) for k in r}
s = sorted(c, key=lambda k:c[k], reverse=True)
print('\n'.join(str(c[k])+' '+k for k in s))
Recommended Posts