从 Python 中的元组列表中的字符串中删除字符
Remove characters from string in list of tuple in Python
我正在使用 Google 驱动器 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 post 中得到了那一行,我发现它可以满足这种需求。但下面是剥离后的输出数据:
[(2017-08-30, 109fADijw_OLojk2nbcxziw2DK), (2017-08-24, 109Xjwj7Fuo_whoqpwl920jAAikLoE)]
之前和之后:
109fADijw_OLojk2nbcxziw2DKn0, 109fADijw_OLojk2nbcxziw2DK
我不太确定为什么会这样,因为我认为列表理解中的条带是在列表 files
中的 x[0] of every tuple x
上执行的。
为什么会这样?
元组中的项目不需要生成器表达式。仅在第一项上应用 strip:
files = [(x.strip('Finance report - '), y) for x, y in files]
此外,由于剥离后留下的部分是固定宽度的,您可以采用slice代替剥离;剥离有时可以有趣,因为它对每个字符都起作用,而不是对整个子字符串起作用:
files = [tuple(x[-10:], y) for x, y in files]
我正在使用 Google 驱动器 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 post 中得到了那一行,我发现它可以满足这种需求。但下面是剥离后的输出数据:
[(2017-08-30, 109fADijw_OLojk2nbcxziw2DK), (2017-08-24, 109Xjwj7Fuo_whoqpwl920jAAikLoE)]
之前和之后:
109fADijw_OLojk2nbcxziw2DKn0, 109fADijw_OLojk2nbcxziw2DK
我不太确定为什么会这样,因为我认为列表理解中的条带是在列表 files
中的 x[0] of every tuple x
上执行的。
为什么会这样?
元组中的项目不需要生成器表达式。仅在第一项上应用 strip:
files = [(x.strip('Finance report - '), y) for x, y in files]
此外,由于剥离后留下的部分是固定宽度的,您可以采用slice代替剥离;剥离有时可以有趣,因为它对每个字符都起作用,而不是对整个子字符串起作用:
files = [tuple(x[-10:], y) for x, y in files]