[PYTHON] Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)

Chapitre 2 Le code est maintenant posté sur github.

Les fichiers texte utilisés dans cette plage sont les suivants

hightemp.txt


Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
Préfecture de Gifu Tajimi 40.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
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
40 Sakata, préfecture de Yamagata.1	1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02

10. Compter le nombre de lignes

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

10.py


#Essayez d'utiliser la notation d'inclusion de liste
num_lines = len([line for line in open('./hightemp.txt')])
print(num_lines)

#Pour vérifier les résultats
import subprocess
output = subprocess.check_output(['wc','-l','./hightemp.txt'])
print(output)

Résultat de l'exécution du code et résultat de l'exécution de la commande

$ python 10.py 
24
b'24 ./hightemp.txt\n'

Si vous regardez le code des autres après la fin du chapitre 1, la phrase for est courte! j'ai pensé Si vous le recherchez, il existe une notation d'inclusion de liste.

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.

11.py


#Convertir les tabulations sur chaque ligne en espace de caractère unique dans la notation d'inclusion de liste
space_text = [line.expandtabs(1) for line in open('./hightemp.txt')]
[print(line) for line in space_text]

#Commande de confirmation
# $ cat ./hightemp.txt | tr '\t' ' '
$ python 11.py 
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

Préfecture de Gunma Kamisatomi 40.3 1998-07-04

Ainishi 40, Préfecture d'Aichi.3 1994-08-05

Préfecture de Chiba Ushihisa 40.2 2004-07-20

Préfecture de Shizuoka Sakuma 40.2 2001-07-24

40 Uwajima, Préfecture d'Ehime.2 1927-07-22

40 Sakata, préfecture de Yamagata.1 1978-08-03

Mino 40, préfecture de Gifu 2007-08-16

Préfecture de Gunma Maebashi 40 2001-07-24

39 Shigehara, Chiba.9 2013-08-11

39 Hatoyama, Préfecture de Saitama.9 1997-07-05

Toyonaka 39, Osaka.9 1994-08-08

Otsuki, Yamanashi 39.9 1990-07-19

39 Tsuruoka, Préfecture de Yamagata.9 1978-08-03

Préfecture d'Aichi Nagoya 39.9 1942-08-02

$ cat ./hightemp.txt | tr '\t' ' '
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
Préfecture de Gunma Kamisatomi 40.3 1998-07-04
Ainishi 40, Préfecture d'Aichi.3 1994-08-05
Préfecture de Chiba Ushihisa 40.2 2004-07-20
Préfecture de Shizuoka Sakuma 40.2 2001-07-24
40 Uwajima, Préfecture d'Ehime.2 1927-07-22
40 Sakata, préfecture de Yamagata.1 1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24
39 Shigehara, Chiba.9 2013-08-11
39 Hatoyama, Préfecture de Saitama.9 1997-07-05
Toyonaka 39, Osaka.9 1994-08-08
Otsuki, Yamanashi 39.9 1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9 1978-08-03
Préfecture d'Aichi Nagoya 39.9 1942-08-02

Je suis un peu inquiet qu'il y ait une pause

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.

12.py


#Découpez chaque ligne avec des onglets dans la notation d'inclusion de liste et répertoriez les première et deuxième colonnes
col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
col2 = [line.split('\t')[1] for line in open('./hightemp.txt')]

#Fichier ouvert en mode écriture
f1 = open('./col1.txt','w')
f2 = open('./col2.txt','w')

#Rejoindre avec le code de saut de ligne
f1.write('\n'.join(col1))
f2.write('\n'.join(col2))

#Commande de confirmation
# $ cat ./hightemp.txt  | cut -f 1
# $ cat ./hightemp.txt  | cut -f 2
$ python 12.py ← col1.txt,col2.txt est créé
$ cat ./hightemp.txt  | cut -f 1
Préfecture de Kochi
Saitama
Préfecture de Gifu
Préfecture de Yamagata
Préfecture de Yamanashi
Préfecture de Wakayama
Préfecture de Shizuoka
Préfecture de Yamanashi
Saitama
Préfecture de Gunma
Préfecture de Gunma
Préfecture d'Aichi
Préfecture de Chiba
Préfecture de Shizuoka
Préfecture d'Ehime
Préfecture de Yamagata
Préfecture de Gifu
Préfecture de Gunma
Préfecture de Chiba
Saitama
Préfecture d'Osaka
Préfecture de Yamanashi
Préfecture de Yamagata
Préfecture d'Aichi

$ cat ./hightemp.txt  | cut -f 2
Egawazaki
Kumagai
Tajimi
Yamagata
Kofu
Katsuragi
Tenryu
Katsunuma
Koshiya
Tatebayashi
Kamisatomi
Ainishi
Ushihisa
Sakuma
Uwajima
Sakata
Mino
Maebashi
Mobara
Hatoyama
Toyonaka
Otsuki
Tsuruoka
Nagoya

col1.txt


Préfecture de Kochi
Saitama
Préfecture de Gifu
Préfecture de Yamagata
Préfecture de Yamanashi
Préfecture de Wakayama
Préfecture de Shizuoka
Préfecture de Yamanashi
Saitama
Préfecture de Gunma
Préfecture de Gunma
Préfecture d'Aichi
Préfecture de Chiba
Préfecture de Shizuoka
Préfecture d'Ehime
Préfecture de Yamagata
Préfecture de Gifu
Préfecture de Gunma
Préfecture de Chiba
Saitama
Préfecture d'Osaka
Préfecture de Yamanashi
Préfecture de Yamagata
Préfecture d'Aichi

col2.txt


Egawazaki
Kumagai
Tajimi
Yamagata
Kofu
Katsuragi
Tenryu
Katsunuma
Koshiya
Tatebayashi
Kamisatomi
Ainishi
Ushihisa
Sakuma
Uwajima
Sakata
Mino
Maebashi
Mobara
Hatoyama
Toyonaka
Otsuki
Tsuruoka
Nagoya

13. Fusionnez col1.txt et col2.txt

Combinez les 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 délimiteurs de tabulation. Utilisez la commande coller pour confirmation.

13.py


#Lire pour le moment
col1 = [line for line in open('./col1.txt')]
col2 = [line for line in open('./col2.txt')]

new_file = open('./new_file.txt','w')

#Concaténer et traiter deux listes avec zip
#Concaténer deux listes avec des onglets, supprimer le code de saut de ligne en une seule ligne
#Dernière pause et passer à la ligne suivante
for col in zip(col1, col2):
    new_file.write('\t'.join(col).replace('\n',''))
    new_file.write('\n')

#Commande de confirmation
# $ paste ./col1.txt ./col2.txt
$ python 13.py
$ cat new_file.txt 
Préfecture de Kochi Egawazaki
Kumagai, Préfecture de Saitama
Tajimi, préfecture de Gifu
Préfecture de Yamagata Yamagata
Préfecture de Yamanashi Kofu
Préfecture de Wakayama Katsuragi
Préfecture de Shizuoka Tenryu
Katsunuma, préfecture de Yamanashi
Koshiya, Préfecture de Saitama
Préfecture de Gunma Tatebayashi
Préfecture de Gunma Kamisatomi
Préfecture d'Aichi Ainishi
Ushihisa, Chiba
Sakuma, préfecture de Shizuoka
Uwajima, Préfecture d'Ehime
Sakata, préfecture de Yamagata
Mino, préfecture de Gifu
Préfecture de Gunma Maebashi
Shigehara, Chiba
Hatoyama, Préfecture de Saitama
Toyonaka, Osaka
Préfecture de Yamanashi Otsuki
Tsuruoka, préfecture de Yamagata
Préfecture d'Aichi Nagoya

$ paste ./col1.txt ./col2.txt
Préfecture de Kochi Egawazaki
Kumagai, Préfecture de Saitama
Tajimi, préfecture de Gifu
Préfecture de Yamagata Yamagata
Préfecture de Yamanashi Kofu
Préfecture de Wakayama Katsuragi
Préfecture de Shizuoka Tenryu
Katsunuma, préfecture de Yamanashi
Koshiya, Préfecture de Saitama
Préfecture de Gunma Tatebayashi
Préfecture de Gunma Kamisatomi
Préfecture d'Aichi Ainishi
Ushihisa, Chiba
Sakuma, préfecture de Shizuoka
Uwajima, Préfecture d'Ehime
Sakata, préfecture de Yamagata
Mino, préfecture de Gifu
Préfecture de Gunma Maebashi
Shigehara, Chiba
Hatoyama, Préfecture de Saitama
Toyonaka, Osaka
Préfecture de Yamanashi Otsuki
Tsuruoka, préfecture de Yamagata
Préfecture d'Aichi Nagoya

14. Sortie de N lignes depuis le début

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.

14.py


# input()L'entrée standard est acceptée à
# int()Convertir en type entier avec
input = int(input())

lines = [line for line in open('./hightemp.txt')]

print(''.join(lines[:input]))

#Commande de confirmation
# $ head ./hightemp.txt -n
$ python 14.py 
4 ← Entrée standard
Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
Préfecture de Gifu Tajimi 40.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25

$ head ./hightemp.txt -n 4
Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
Préfecture de Gifu Tajimi 40.9	2007-08-16
Yamagata 40 Yamagata.8	1933-07-25

15. Sortez les N dernières lignes

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.

15.py


#Même sentiment que 14
input = int(input())

lines = [line for line in open('./hightemp.txt')]

#Revue de tranche
#Si vous donnez un nombre négatif, vous pouvez le gérer dans l'ordre de la fin
print(''.join(lines[-input:]))

#Commande de confirmation
# $ tail ./hightemp.txt -n
$ python 15.py 
3 ← Entrée standard
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02

$ tail ./hightemp.txt -n 3
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02

16. Divisez le fichier en 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.

16.py


input = int(input())

lines = [line for line in open('./hightemp.txt')]

sublist = [''.join(lines[i:i+input]) for i in range(0,len(lines),input)]

#python pour vérifier les résultats
for i in sublist:
    print(i)

#Commande de confirmation
# $ split -l N ./hightemp.txt 
$ python 16.py
9 ← Entrée standard
Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
Préfecture de Gifu Tajimi 40.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
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
40 Sakata, préfecture de Yamagata.1	1978-08-03
Mino 40, préfecture de Gifu 2007-08-16
Préfecture de Gunma Maebashi 40 2001-07-24

39 Shigehara, Chiba.9	2013-08-11
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
Toyonaka 39, Osaka.9	1994-08-08
Otsuki, Yamanashi 39.9	1990-07-19
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Préfecture d'Aichi Nagoya 39.9	1942-08-02

$ split -l 9 ./hightemp.txt 

$ ls
10.py  12.py  14.py  16.py  18.py  col1.txt  hightemp.txt  xaa  xac
11.py  13.py  15.py  17.py  19.py  col2.txt  new_file.txt  xab

$ cat xaa
Préfecture de Kochi Egawasaki 41 2013-08-12
40 Kumagai, Préfecture de Saitama.9	2007-08-16
Préfecture de Gifu Tajimi 40.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

17. Différence dans la chaîne de caractères dans la première colonne

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.

17.py


#Extraire les données de la première colonne
col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
output = []

#Ajouter à une autre liste, ne pas saisir de valeurs en double
for c in col1:
    if c not in output:
        output.append(c)

print(output)

# $ cat hightemp.txt | cut -f 1 | sort -k1  | uniq
$ python 17.py 
['Préfecture de Kochi', 'Saitama', 'Préfecture de Gifu', 'Préfecture de Yamagata', 'Préfecture de Yamanashi', 'Préfecture de Wakayama', 'Préfecture de Shizuoka', 'Préfecture de Gunma', 'Préfecture d'Aichi', 'Préfecture de Chiba', 'Préfecture d'Ehime', 'Préfecture d'Osaka']

$ cat hightemp.txt | cut -f 1 | sort -k1  | uniq
Préfecture d'Aichi
Préfecture d'Ehime
Préfecture de Gifu
Préfecture de Gunma
Préfecture de Kochi
Saitama
Préfecture de Yamagata
Préfecture de Yamanashi
Préfecture de Shizuoka
Préfecture de Chiba
Préfecture d'Osaka
Préfecture de Wakayama

18. Triez chaque ligne dans l'ordre décroissant des nombres dans la troisième colonne

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).

18.py


#Prenez une liste dans la troisième colonne et une liste pour chaque ligne
values = [line.split('\t')[2] for line in open('./hightemp.txt')]
keys = [line for line in open('./hightemp.txt')]

dic = dict(zip(keys,values))

#Trier par la valeur dans la troisième colonne
sort_dic = sorted(dic.items(), key=lambda x:x[1])

for k,v in sort_dic:
    print(k)

#Commande de confirmation
# $ cat hightemp.txt |  sort -k3
$ python 18.py 
39 Shigehara, Chiba.9	2013-08-11

39 Hatoyama, Préfecture de Saitama.9	1997-07-05

Toyonaka 39, Osaka.9	1994-08-08

Otsuki, Yamanashi 39.9	1990-07-19

39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03

Préfecture d'Aichi Nagoya 39.9	1942-08-02

Mino 40, préfecture de Gifu 2007-08-16

Préfecture de Gunma Maebashi 40 2001-07-24

40 Sakata, préfecture de Yamagata.1	1978-08-03

Préfecture de Chiba Ushihisa 40.2	2004-07-20

Préfecture de Shizuoka Sakuma 40.2	2001-07-24

40 Uwajima, Préfecture d'Ehime.2	1927-07-22

Préfecture de Gunma Tatebayashi 40.3	2007-08-16

Préfecture de Gunma Kamisatomi 40.3	1998-07-04

Ainishi 40, Préfecture d'Aichi.3	1994-08-05

40 Koshiya, Préfecture de Saitama.4	2007-08-16

40 Katsunuma, préfecture de Yamanashi.5	2013-08-10

Préfecture de Wakayama Katsuragi 40.6	1994-08-08

Préfecture de Shizuoka Tenryu 40.6	1994-08-04

Préfecture de Yamanashi Kofu 40.7	2013-08-10

Yamagata 40 Yamagata.8	1933-07-25

40 Kumagai, Préfecture de Saitama.9	2007-08-16

Préfecture de Gifu Tajimi 40.9	2007-08-16

Préfecture de Kochi Egawasaki 41 2013-08-12

$ cat hightemp.txt |  sort -k3
Préfecture d'Aichi Nagoya 39.9	1942-08-02
39 Tsuruoka, Préfecture de Yamagata.9	1978-08-03
Otsuki, Yamanashi 39.9	1990-07-19
Toyonaka 39, Osaka.9	1994-08-08
39 Hatoyama, Préfecture de Saitama.9	1997-07-05
39 Shigehara, Chiba.9	2013-08-11
Préfecture de Gunma Maebashi 40 2001-07-24
Mino 40, préfecture de Gifu 2007-08-16
40 Sakata, préfecture de Yamagata.1	1978-08-03
40 Uwajima, Préfecture d'Ehime.2	1927-07-22
Préfecture de Shizuoka Sakuma 40.2	2001-07-24
Préfecture de Chiba Ushihisa 40.2	2004-07-20
Ainishi 40, Préfecture d'Aichi.3	1994-08-05
Préfecture de Gunma Kamisatomi 40.3	1998-07-04
Préfecture de Gunma Tatebayashi 40.3	2007-08-16
40 Koshiya, Préfecture de Saitama.4	2007-08-16
40 Katsunuma, préfecture de Yamanashi.5	2013-08-10
Préfecture de Shizuoka Tenryu 40.6	1994-08-04
Préfecture de Wakayama Katsuragi 40.6	1994-08-08
Préfecture de Yamanashi Kofu 40.7	2013-08-10
Yamagata 40 Yamagata.8	1933-07-25
Préfecture de Gifu Tajimi 40.9	2007-08-16
40 Kumagai, Préfecture de Saitama.9	2007-08-16
Préfecture de Kochi Egawasaki 41 2013-08-12

19. Recherchez la fréquence d'apparition de la chaîne de caractères dans la première colonne de chaque ligne et organisez-les par ordre décroissant de fréquence d'apparition.

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 et sort pour confirmation.

19.py


from collections import Counter

#Extraire les données de la première colonne
col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]

# collections.Utiliser le compteur
counter = Counter(col1)
for word,count in counter.most_common():
    print(word+', '+str(count))

#Commande de confirmation
# $ cat ./hightemp.txt  | cut -f 1 | sort | uniq -c | sort -r
$ python 19.py 
Saitama, 3
Préfecture de Yamagata, 3
Préfecture de Yamanashi, 3
Préfecture de Gunma, 3
Préfecture de Gifu, 2
Préfecture de Shizuoka, 2
Préfecture d'Aichi, 2
Préfecture de Chiba, 2
Préfecture de Kochi, 1
Préfecture de Wakayama, 1
Préfecture d'Ehime, 1
Préfecture d'Osaka, 1

$ cat ./hightemp.txt  | cut -f 1 | sort | uniq -c | sort -r
3 Préfecture de Yamanashi
3 Préfecture de Yamagata
3 Préfecture de Saitama
3 Préfecture de Gunma
2 Chiba
2 Préfecture de Shizuoka
2 Préfecture de Gifu
2 Préfecture d'Aichi
1 Préfecture de Wakayama
1 Préfecture d'Osaka
1 Préfecture de Kochi
1 Préfecture d'Ehime

Correction du 18/03/2017

Corrigé car j'ai reçu un commentaire

10.py


#Essayez d'utiliser la notation d'inclusion de liste
# num_lines = len(list(open('./hightemp.txt')))

#Notation d'inclusion de générateur
#Lisez ligne par ligne et comptez le nombre de lignes
#L'utilisation de la mémoire est réduite car la liste n'est pas créée comme la notation d'inclusion de liste.
num_lines = sum(1 for line in open('./hightemp.txt'))
print(num_lines)

Dans la notation d'inclusion de liste, toutes les données du fichier sont temporairement stockées dans la mémoire. Parce que tu finis par créer une liste en vain Il semble préférable d'utiliser autant que possible la notation d'inclusion du générateur

11.py


#Convertir les tabulations sur chaque ligne en espace de caractère unique dans la notation d'inclusion de liste
space_text = [line.expandtabs(1) for line in open('./hightemp.txt')]

#Dans la fonction d'impression de python3, end est le deuxième argument=""alors""Peut gérer les caractères dans
# end=""Ensuite, il n'y aura pas de sauts de ligne
print(''.join(space_text),end='')

Si vous utilisez end = "" dans le deuxième argument de la fonction d'impression Vous pouvez définir le caractère de fin Élimine les sauts de ligne étranges

12.py


#Découpez chaque ligne avec des onglets dans la notation d'inclusion de liste et répertoriez les première et deuxième colonnes
# col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
# col2 = [line.split('\t')[1] for line in open('./hightemp.txt')]

#Notation d'inclusion de générateur
col1 = '\n'.join(line.split('\t')[0] for line in open('./hightemp.txt'))
col2 = '\n'.join(line.split('\t')[1] for line in open('./hightemp.txt'))

#Fichier ouvert en mode écriture
f1 = open('./col1.txt','w')
f2 = open('./col2.txt','w')

#Rejoindre avec le code de saut de ligne
f1.write(col1)
f2.write(col2)

14.py


# input()L'entrée standard est acceptée à
# int()Convertir en type entier avec
input_num = int(input())

lines = [line for line in open('./hightemp.txt')]

print(''.join(lines[:input_num]))

15.py


#Même sentiment que 14
input_num = int(input())

lines = [line for line in open('./hightemp.txt')]

#Revue de tranche
#Si vous donnez un nombre négatif, vous pouvez le gérer dans l'ordre de la fin
print(''.join(lines[-input_num:]))

16.py


input_num = int(input())

lines = [line for line in open('./hightemp.txt')]

sublist = [''.join(lines[i:i+input_num]) for i in range(0,len(lines),input_num)]

#python pour vérifier les résultats
for i in sublist:
    print(i)

Si input = int (input ()), la fonction d'entrée ne peut plus être utilisée après cela. Remplacez le nom de la variable par input_num

18.py


#Prenez une liste dans la troisième colonne et une liste pour chaque ligne
values = [line.split('\t')[2] for line in open('./hightemp.txt')]
keys = [line for line in open('./hightemp.txt')]

dic = dict(zip(keys,values))

#Trier par la valeur dans la troisième colonne
sort_dic = sorted(dic.items(), key=lambda x:x[1])

for k,v in sort_dic:
    print(k,end='')

J'ai effacé d'étranges sauts de ligne avec print (**, end = '')

19.py


from collections import Counter

#Extraire les données de la première colonne
# col1 = [line.split('\t')[0] for line in open('./hightemp.txt')]
# collections.Utiliser le compteur
# counter = Counter(col1)

#Est-il préférable d'utiliser la notation d'inclusion du générateur sur une seule ligne?
counter = Counter(line.split('\t')[0] for line in open('./hightemp.txt'))
for word,count in counter.most_common():
    print(word+', '+str(count))

Sauf pour le traitement dans la liste après lecture du fichier dans son ensemble Tout corrigé pour inclure la notation du générateur

Recommended Posts

100 coups de traitement du langage ~ Chapitre 1
Le traitement de 100 langues frappe le chapitre 2 (10 ~ 19)
100 traitements linguistiques frappent 03 ~ 05
100 coups de traitement linguistique (2020): 40
100 coups de traitement linguistique (2020): 32
100 coups de traitement linguistique (2020): 47
100 coups de traitement linguistique (2020): 22
100 coups de traitement linguistique (2020): 26
100 coups de traitement linguistique (2020): 34
100 coups de traitement linguistique (2020): 42
100 coups de traitement linguistique (2020): 29
100 coups de traitement linguistique (2020): 49
Le traitement de 100 langues frappe 06 ~ 09
100 coups de traitement linguistique (2020): 43
100 coups de traitement linguistique (2020): 24
100 coups de traitement linguistique (2020): 45
100 coups de traitement linguistique (2020): 10-19
100 coups de traitement linguistique (2020): 30
100 coups de traitement linguistique (2020): 00-09
100 coups de traitement linguistique (2020): 31
100 coups de traitement linguistique (2020): 48
100 coups de traitement linguistique (2020): 44
100 coups de traitement linguistique (2020): 41
100 coups de traitement linguistique (2020): 37
100 coups de traitement linguistique (2020): 25
100 coups de traitement linguistique (2020): 23
100 coups de traitement linguistique (2020): 33
100 coups de traitement linguistique (2020): 20
100 coups de traitement linguistique (2020): 27
100 coups de traitement linguistique (2020): 46
100 coups de traitement linguistique (2020): 21
100 coups de traitement linguistique (2020): 36
100 traitements du langage naturel frappent le chapitre 4 Commentaire
[Traitement du langage 100 coups 2020] Chapitre 6: Machine learning
100 coups de traitement du langage 2020: Chapitre 4 (analyse morphologique)
[Traitement du langage 100 coups 2020] Chapitre 5: Analyse des dépendances
[Traitement du langage 100 coups 2020] Chapitre 1: Mouvement préparatoire
[Traitement du langage 100 coups 2020] Chapitre 7: Vecteur Word
100 Language Processing Knock 2020: Chapitre 3 (expression régulière)
[Traitement du langage 100 coups 2020] Chapitre 8: Réseau neuronal
[Traitement du langage 100 coups 2020] Chapitre 2: Commandes UNIX
[Traitement du langage 100 coups 2020] Chapitre 9: RNN, CNN
[Traitement du langage 100 coups 2020] Chapitre 4: Analyse morphologique
100 coups de traitement du langage amateur: 41
100 coups de traitement du langage amateur: 56
100 coups de traitement du langage amateur: 24
100 coups de traitement du langage amateur: 50
100 coups de traitement du langage amateur: 59
100 coups de traitement du langage amateur: 70
100 coups de traitement du langage amateur: 62
100 Language Processing Knock 2020 Chapitre 1
100 coups de traitement du langage amateur: 92
100 coups de langue amateur: 06
100 coups de traitement du langage amateur: 81
100 coups de traitement du langage amateur: 46
100 coups de traitement du langage amateur: 88
100 coups de traitement du langage amateur: 89
100 coups de traitement du langage amateur: 43
100 coups de traitement du langage amateur: 55
100 coups de traitement du langage amateur: 94
100 coups de traitement du langage amateur: 54