从 Python 元组列表中的字符串中删除字符

理查德·G

我正在使用 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 xin 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章