我正在使用 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
我不确定为什么会发生这种情况,因为我认为列表理解中的 strip 是在x[0] of every tuple x
in list上执行的files
。
为什么会这样?
元组中的项目不需要生成器表达式。仅在第一项上应用条带:
files = [(x.strip('Finance report - '), y) for x, y in files]
另外,由于剥离后留下的部分是固定宽度的,因此您可以切片而不是剥离;剥离有时会很有趣,因为它适用于每个字符,而不是整个子字符串:
files = [tuple(x[-10:], y) for x, y in files]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句