Notes pour écrire du code de type Python

introduction

J'ai organisé les réécritures que j'ai souvent utilisées après avoir écrit python.

namedtuple

Je pense que je vais utiliser la classe lorsque je veux réutiliser une structure. Cependant, je n'aimais pas beaucoup cela car cela allongerait le code.

class Twitter:
	def __init__(self, account, user, followers, followings, tweets):
		self.account = account
		self.user = user
		self.followers = followers
		self.followings = followings
		self.tweets = tweets

	def __repr__(self):
		return f"{type(self).__name__}(account={repr(self.account)}, user={repr(self.user)}, followers={repr(self.followers)}, followings={repr(self.followings)}, tweets={repr(self.tweets)})"

t = Twitter("Yuriko Koike", "@ecoyuri", 790000, 596, 3979)
print(t)
Twitter(account='Yuriko Koike', user='@ecoyuri', followers=790000, followings=596, tweets=3979)

Je pourrais écrire ceci en utilisant namedtuple: ↓

from collections import namedtuple

Twitter = namedtuple('Twitter', 'account user followers followings tweets')
t = Twitter('Yuriko Koike', '@ecoyuri', 790000, 596, 3979)
print(t)
#La sortie est la même que ci-dessus

Alors j'ai pensé que c'était très bien.

yield

Par exemple, considérez le code suivant.

def omit_stopwords(tweets):
	omitted_tweets = []
	for t in tweets:
		#url ou@{Nom d'utilisateur}Ou#{Nom de la balise}Retirer
		reg = r'https?://[\w/:%#\$&\?\(\)~\.=\+\-]+|[@@][A-Za-z0-9._-]+|[##][un-龥_Ah-Hmm_UNE-ヺ un-zA-Za-zA-Z0-9]+'
		text_mod = re.sub(reg,'',t['text'])
		omitted_tweets.append(text_mod)
	return omitted_tweets

# get_tweets"[{'text':{tweet1},'text':{tweet2},...,'text':{tweetN}]Fonction qui renvoie des données au format"
ots = omit_stopwords(get_tweets())

for ot in ots:
	print(f"analyzing the tweet: {ot}")
analyzing the tweet:Aujourd'hui 18:La livraison en direct à partir de 45 ans sera accompagnée par le gouverneur Yoshimura de la préfecture d'Osaka. ~~~
・ ・ ・
analyzing the tweet:~~~. Nous continuerons de mener des enquêtes sur le terrain pour empêcher la propagation de l'infection.

Les données des tweets, etc. sont généralement volumineuses, donc `` omitted_tweets``` est une liste assez longue, ce qui n'est pas bon en termes de mémoire et de vitesse. Dans de tels moments

def omit_stopwords(tweets):
	for t in tweets:
		reg = r'https?://[\w/:%#\$&\?\(\)~\.=\+\-]+|[@@][A-Za-z0-9._-]+|[##][un-龥_Ah-Hmm_UNE-ヺ un-zA-Za-zA-Z0-9]+'
		text_mod = re.sub(reg,'',t['text'])
		yield text_mod

ots = omit_stopwords(get_tweets())

for ot in ots:
	print(f"analyzing the tweet: {ot}")

En utilisant yield au lieu de `` `` return comme dans Semble pouvoir. Pour preuve de cela, si vous essayez de sortir la variable ots,

<generator object omit_stopwords_yield at 0x10f957468>

C'est un type de générateur comme

print(f"analyzing the tweet: {ots.__next__()}")
print(f"analyzing the tweet: {ots.__next__()}")
print(f"analyzing the tweet: {ots.__next__()}")
#・ ・ ・

Vous pouvez sortir les données de la liste une par une avec. (Après avoir activé l'instruction for, une erreur se produira car le générateur est épuisé.)

Notation d'inclusion

reg = r'[@@][A-Za-z0-9._-]+'
target_tweets = []
# @{Nom d'utilisateur}Extrayez uniquement les tweets qui ne contiennent pas
for t in get_tweets():
	if not re.search(reg, t['text']):
		target_tweets.append(t)

↑ est

reg = r'[@@][A-Za-z0-9._-]+'
target_tweets = [t for t in get_tweets() if not re.search(reg, t['text'])]

Je vais le mettre de manière rafraîchissante comme. Souvent utilisé lorsque vous souhaitez créer une autre liste à partir d'une liste.

Je veux donc l'utiliser de manière positive.

en conclusion

D'autres peuvent être ajoutés le cas échéant.

Recommended Posts

Notes pour écrire du code de type Python
Un outil pour saisir facilement du code Python
Écrire du code de type python
Juste une note
Écrire du code semblable à Python (dictionnaire)
Écrire sur la création d'un environnement Python pour l'écriture de Qiita Qiita
Créez un code QR pour l'URL sous Linux
Avant d'écrire du code Python
Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Techniques de test de code?
Une note sur le sous-processus
Remarques sur l'accélération du code Python avec Numba
Une note sur mprotect (2)
Remarques sur l'écriture des fichiers de configuration pour Python Remarque: configparser
Remarques sur l'intégration du langage de script dans les scripts bash
Remarque 2 pour intégrer le langage de script dans un script bash
Code Python pour l'écriture de données CSV dans le stockage d'objets DSX
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
Mémo de code personnel Python
Une note sur KornShell (ksh)
[Remarque] Exemple de code CADquery
Une note sur TensorFlow Introduction
Notes depuis 3 mois depuis que j'ai commencé Python
Fait une commande pour FizzBuzz
[Python] Exemple de code pour la grammaire Python
Une petite note qui suit printf
Une note sur [python] __debug__
Concurrence avec VS Code Créez un environnement Python pour les professionnels sous Windows
Python> J'ai créé un code de test pour mon propre fichier externe