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.)
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.
Andere können nach Bedarf hinzugefügt werden.
Recommended Posts