[英]Remove characters from string in list of tuple in Python
我將Google Drive API用作正在編寫的應用程序的一部分。 我目前有一個包含以下信息(File name, File ID)
元組的列表:
example > [(Finance Report - 2017-08-30, 109fADijw_OLojk2nbcxziw2DKn0), (Finance Report - 2017-08-24, 109Xjwj7Fuo_whoqpwl920jAAikLoEnU)]
我正在嘗試從每個元組的文件名部分中刪除Finance Report -
。 但是奇怪的事情正在發生,它也在從元組的文件ID部分剝離數據。 以下是應用程序此部分的代碼片段。
q_param = "'%s' in parents" % PARENT_ID
files = []
response = drive_service.files().list(q=q_param,
spaces='drive').execute()
for drive_file in response.get('files', []):
files.append((drive_file.get('name'), drive_file.get('id')))
#Removing files that aren't labeled Finance report ...
files = [x for x in files if "Finance report" in x[0]]
#Stripping Finance Report from each file name
files = [tuple(x.strip('Finance report - ') for x in y) for y in files]
我從Stack Overflow帖子中得到了那條特定的線,我發現它可以滿足這種需求。 但是下面是剝離后的輸出數據:
[(2017-08-30, 109fADijw_OLojk2nbcxziw2DK), (2017-08-24, 109Xjwj7Fuo_whoqpwl920jAAikLoE)]
之前和之后:
109fADijw_OLojk2nbcxziw2DKn0, 109fADijw_OLojk2nbcxziw2DK
我不確定為什么會這樣,因為我認為對列表files
x[0] of every tuple x
的x[0] of every tuple x
都執行列表理解中的剝離。
為什么會這樣呢?
您不需要元組中項目的生成器表達式。 僅在第一項上塗條 :
files = [(x.strip('Finance report - '), y) for x, y in files]
另外,由於剝離后剩下的部分的寬度是固定的,因此可以切片而不是剝離 ; 剝離有時可能很有趣 ,因為每個字符都起作用,而不是整個子字符串上:
files = [tuple(x[-10:], y) for x, y in files]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.