2017-09-01 88 views
0

我正在使用Google Drive API作爲我正在編寫的應用程序的一部分。我現在有一個包含以下信息 (File name, File ID)元組的列表:從Python中的元組列表中的字符串中刪除字符

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] 

我從一個堆棧溢出 後,我找到了對付這種需要特定行。但低於正是輸出數據看起來像剝後:

[(2017-08-30, 109fADijw_OLojk2nbcxziw2DK), (2017-08-24, 109Xjwj7Fuo_whoqpwl920jAAikLoE)] 

前後:

109fADijw_OLojk2nbcxziw2DKn0, 109fADijw_OLojk2nbcxziw2DK 

我真的不知道爲什麼,我想帶列表中的理解是這是發生在列表files中的x[0] of every tuple x上執行。

這是怎麼發生的?

回答

1

您不需要元組中的項的生成器表達式。僅在第一項申請

files = [(x.strip('Finance report - '), y) for x, y in files] 

另外,由於部分左汽提後是固定寬度的,可以採取一個切片代替剝離的;剝離可以是搞笑有時它可以在每個字符上工作,而不是在整個子字符串上:

files = [tuple(x[-10:], y) for x, y in files] 
相關問題