本質上,我的目標是將我的 def 函式的輸出保存到一個串列中,然后我可以將其保存到資料框中。我正在使用該函式并意識到每次我更改定義函式時,它都會一次對一個輸出進行更改。然后我意識到對于每個輸出,函式都會一遍又一遍地呼叫自己。我想我必須在這個函式之外呼叫一個變數,它可以組合函式輸出的所有呼叫,但我不確定如何。 使用建議更新代碼
def getEmails():
creds = None
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('gmail', 'v1', credentials=creds)
result = service.users().messages().list(userId='me').execute()
messages = result.get('messages')
for msg in messages:
txt = service.users().messages().get(userId='me', id=msg['id']).execute()
m_id = msg['id'] # get id of individual message
try:
payload = txt['payload']
headers = payload['headers']
for d in headers:
if d['name'] == 'Subject':
subject = d['value']
if d['name'] == 'From':
sender = d['value']
if d['name'] == 'Date':
date = d['value']
parts = payload.get('parts')[0]
data = parts['body']['data']
data = data.replace("-"," ").replace("_","/")
decoded_data = base64.b64decode(data)
soup = BeautifulSoup(decoded_data , "lxml")
body = soup.body()
names = soup.body.findAll('p')
page = soup.find('p', text=re.compile('has been listed on ')).getText()
if page:
match = re.search(r'has been listed on ' '\\b\w \\b' ' ', str(page))
if match:
site = match.group()
else:
None
def Convert(string):
li = list(string.split())
return li
if sender == 'Cryptocurrency Alerting <[email protected]>':
site = site.replace("has been listed on ", "")
s = list(Convert((str(site))))
results = []
results.append(s)
print(results)
except:
pass
getEmails()
這個函式的輸出看起來像這樣
[['OKEX']]
[['OKEX']]
[['OKEX']]
[['Kucoin']]
[['Kucoin']]
[['Kucoin']]
[['Kucoin']]
[['Hotbit']]
我試過了
k = print(s, end="", flush = True)
哪個輸出
['Hotbit']['Hotbit']['OKEX']['OKEX']['OKEX']
然而,這并沒有使它成為一個串列。我需要這個函式之外的變數,以便它可以獲取輸出并將其放入串列中。
uj5u.com熱心網友回復:
組合您的結果并從函式中回傳它們:
def getEmails():
results = []
# lots of code...
if sender == 'Cryptocurrency Alerting <[email protected]>':
site = site.replace("has been listed on ", "")
s = list(Convert((str(site))))
results.append(s)
return results
# retrieve the results
results = getEmails()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/348923.html
