簡體   English   中英

從Python中的元組列表中的字符串中刪除字符

[英]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 xx[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM