Voir First Post
9/24 ajouté
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.
Comptez le nombre de lignes. Utilisez la commande wc pour confirmation.
wc_010.py
#-*- coding:utf-8 -*-
import subprocess
import codecs
if __name__=="__main__":
filename = 'hightemp.txt'
basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
f = codecs.open(filename,'r','utf-8')
#\Comptez le nombre de n. Le tableau commence à 0, donc à la fin+1
for index,data in enumerate(f):
data.split('\n')
print("Le nombre de lignes dans le fichier",index+1)
#Vérifiez la sortie avec la commande wc
output = subprocess.check_output(["wc","-l",basepath+filename])
print(output.decode('utf-8'))
result
24 lignes dans le fichier
24 /Users/masassy/PycharmProjects/Pywork/training/hightemp.txt
Impressions: ouvrez le fichier et comptez le code de saut de ligne par index. Les codecs qui peuvent être lus en spécifiant le code de caractère sont pratiques.
Remplacez chaque onglet par un espace. Utilisez la commande sed, la commande tr ou la commande expand pour confirmation.
tab2space_011.py
-*- coding:utf-8 -*-
import subprocess
import codecs
if __name__=="__main__":
filename = 'hightemp.txt'
basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
f = codecs.open(filename,'r','utf-8')
#read lit tous les caractères, readline lit une ligne, readlines lit toutes les lignes
r = f.read()
space_data=''
for tab_data in r:
if(tab_data=='\t'):
space_data += " "
continue
else:
space_data += tab_data
print(space_data)
#Vérifiez la sortie avec la commande sed
output =subprocess.check_output(["sed","-e" ,"s/\t/ /g",basepath+filename])
print(output.decode('utf-8'))
result
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
(Omis car le résultat est long)
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
(Omis car le résultat est long)
Process finished with exit code 0
Impressions: j'ai pu confirmer la différence entre read (), readline () et readlines (). Le sous-processus qui peut utiliser des commandes est vraiment pratique.
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.
cut_012.py
# -*- coding:utf-8 -*-
import codecs
import subprocess
if __name__ == "__main__":
filename = 'hightemp.txt'
writename1='col1.txt'
writename2='col2.txt'
basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
f = codecs.open(filename,'r','utf-8')
r = f.readlines()
word_list1= []
word_list2= []
#avec split\Ajouter à la liste séparément pour chaque t
for temp1 in r:
word_list1.append(temp1.split('\t')[0])
f.close
f = codecs.open(writename1,'w','utf-8')
for word in word_list1:
f.write(word+'\n')
f.close
for temp2 in r:
word_list2.append(temp2.split('\t')[1])
f.close
f = codecs.open(writename2,'w','utf-8')
for word in word_list2:
f.write(word+'\n')
f.close
#Vérifiez la sortie avec la commande cut
output = subprocess.check_output(["cut","-f","1,2",basepath+filename])
print(output.decode('utf-8'))
result
*La commande cut sort les première et deuxième colonnes en même temps
Préfecture de Kochi Egawazaki
Kumagai, Préfecture de Saitama
Tajimi, préfecture de Gifu
(Omis car le résultat est long)
Process finished with exit code 0
col1.txt
Préfecture de Kochi
Saitama
Préfecture de Gifu
(Omis car le résultat est long)
col2.txt
Egawazaki
Kumagai
Tajimi
(Omis car le résultat est long)
Impression: j'ai divisé le traitement en col1.txt et col2.txt, mais il semble y avoir un bon traitement ...
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.
merge_013.py
#-*- conding:utf-8 -*-
import codecs
import subprocess
basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
filename1 = 'col1.txt'
filename2 = 'col2.txt'
filename3 = 'col3.txt'
#Lire les fichiers avec des readlines et les lister
f1 = codecs.open(filename1,'r','utf-8')
r1 = f1.readlines()
f1.close()
f2 = codecs.open(filename2,'r','utf-8')
r2 = f2.readlines()
f2.close()
s_r1=''
s_r2=''
#Changer la liste en une chaîne, r1\n est\Changer en t(\t devient un garde)
for data in r1:
s_r1 += str(data)
s_r1=s_r1.replace('\n','\t')
#Changer la liste en chaîne(\n est laissé tel quel parce que c'est un gardien)
for data in r2:
s_r2 += str(data)
address=''
i=0
#s_Évaluer r1 caractère par personnage et garde(\t)Ajouter des données à l'adresse jusqu'à
for temp in s_r1:
if(temp!='\t'):
address+=temp
else:
#s à adresser_Les données de r2(\n)Ajouter jusqu'à
address+='\t'
while(s_r2[i]!='\n'):
address+=s_r2[i]
i+=1
else:
address+='\n'
i+=1
continue
f3=codecs.open(filename3,'w','utf-8')
f3.write(address)
f3.close()
output=subprocess.check_output(["paste",basepath+filename1,basepath+filename2])
print(output.decode('utf-8'))
result
Préfecture de Kochi Egawazaki
Kumagai, Préfecture de Saitama
Tajimi, préfecture de Gifu
(Omis car le résultat est long)
Process finished with exit code 0
Impressions: ajoutez des données dans une double boucle.
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.
head_014.py
#-*- coding:utf-8 -*-
import codecs
import subprocess
def head(data,N):
i=0
j=0
msg=''
while(i<N):
for temp in data[j]:
if(temp!='\n'):
msg += temp
j+=1
else:
msg += '\n'
i+=1
j+=1
break
else:
return msg
if __name__=="__main__":
filename = 'hightemp.txt'
basepath = '/Users/masassy/PycharmProjects/Pywork/training/'
f = codecs.open(filename,'r','utf-8')
r=f.read()
N=4
msg = head(r,N)
print(msg)
#Confirmer avec la commande head
output=subprocess.check_output(["head","-n",str(N),basepath+filename])
print(output.decode('utf-8'))
result
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 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
Process finished with exit code 0
Impressions: il est devenu quelque chose comme le langage C. .. ..
Recommended Posts