Hinweise zum Schreiben von Python-ähnlichem Code

Einführung

Ich habe die Umschreibungen organisiert, die ich oft nach dem Schreiben von Python verwendet habe.

namedtuple

Ich denke, ich werde Klasse verwenden, wenn ich eine Struktur wiederverwenden möchte. Es hat mir jedoch nicht sehr gut gefallen, weil es den Code länger machen würde.

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)

Ich könnte dies mit namedtuple schreiben: ↓

from collections import namedtuple

Twitter = namedtuple('Twitter', 'account user followers followings tweets')
t = Twitter('Yuriko Koike', '@ecoyuri', 790000, 596, 3979)
print(t)
#Die Ausgabe ist die gleiche wie oben

Also fand ich es sehr gut.

yield

Betrachten Sie beispielsweise den folgenden Code.

def omit_stopwords(tweets):
	omitted_tweets = []
	for t in tweets:
		#URL oder@{Nutzername}Oder#{Verlinke den Namen}Entfernen
		reg = r'https?://[\w/:%#\$&\?\(\)~\.=\+\-]+|[@@][A-Za-z0-9._-]+|[##][einer-龥_Ah-Hmm_EIN-ヺ a-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}]Funktion, die Daten im Format zurückgibt"
ots = omit_stopwords(get_tweets())

for ot in ots:
	print(f"analyzing the tweet: {ot}")
analyzing the tweet:Heute 18:Die Live-Lieferung ab 45 wird von Gouverneur Yoshimura aus der Präfektur Osaka begleitet. ~~~
・ ・ ・
analyzing the tweet:~~~. Wir werden weiterhin Felduntersuchungen durchführen, um die Ausbreitung von Infektionen zu verhindern.

Tweet-Daten usw. sind normalerweise groß, daher ist `` `omitted_tweets``` eine ziemlich große Liste, die in Bezug auf Speicher und Geschwindigkeit nicht gut ist. Zu solchen Zeiten

def omit_stopwords(tweets):
	for t in tweets:
		reg = r'https?://[\w/:%#\$&\?\(\)~\.=\+\-]+|[@@][A-Za-z0-9._-]+|[##][einer-龥_Ah-Hmm_EIN-ヺ a-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}")

Durch Verwendung von `ield``` anstelle von return``` wie in Scheint in der Lage zu sein. Als Beweis dafür, wenn Sie versuchen, die Variable `` ots``` auszugeben

<generator object omit_stopwords_yield at 0x10f957468>

Es ist ein Generatortyp wie

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

Sie können die Daten in der Liste einzeln mit ausgeben. (Nach dem Drehen der for-Anweisung tritt ein Fehler auf, weil der Generator aufgebraucht ist.)

Einschlussnotation

reg = r'[@@][A-Za-z0-9._-]+'
target_tweets = []
# @{Nutzername}Extrahieren Sie nur Tweets, die nicht enthalten sind
for t in get_tweets():
	if not re.search(reg, t['text']):
		target_tweets.append(t)

↑ ist

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

Ich werde es erfrischend ausdrücken. Wird häufig verwendet, wenn Sie eine andere Liste aus einer Liste erstellen möchten.

Also möchte ich es positiv nutzen.

abschließend

Andere können nach Bedarf hinzugefügt werden.

Recommended Posts

Hinweise zum Schreiben von Python-ähnlichem Code
Ein Tool zur einfachen Eingabe von Python-Code
Schreiben Sie Python-ähnlichen Code
Nur eine Notiz
Schreiben Sie Python-ähnlichen Code (Dictionary)
Schreiben Sie über das Erstellen einer Python-Umgebung zum Schreiben von Qiita Qiita
Erstellen Sie unter Linux einen QR-Code für die URL
Vor dem Schreiben von Python-Code
Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python
Techniken zum Testen von Code?
Ein Hinweis zum Unterprozess
Hinweise zur Beschleunigung des Python-Codes mit Numba
Ein Hinweis zu mprotect (2)
Hinweise zum Schreiben von Konfigurationsdateien für Python Hinweis: configparser
Hinweise zum Einbetten der Skriptsprache in Bash-Skripte
Hinweis 2 zum Einbetten der Skriptsprache in ein Bash-Skript
Python-Code zum Schreiben von CSV-Daten in den DSX-Objektspeicher
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
Persönliches Python-Code-Memo
Ein Hinweis zu KornShell (ksh)
[Hinweis] CADquery-Beispielcode
Ein Hinweis zur TensorFlow-Einführung
Notizen für 3 Monate, seit ich Python gestartet habe
Befehl für FizzBuzz erstellt
[Python] Beispielcode für die Python-Grammatik
Eine kleine Notiz, die auf printf folgt
Ein Hinweis zu [Python] __debug__
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Python> Ich habe einen Testcode für meine eigene externe Datei erstellt