Частичный текстовый поиск внутри вложенного списка в словаре с использованием python - PullRequest
0 голосов
/ 05 марта 2020

У меня есть список, содержащий словари, как показано ниже при запросе данных с помощью google drive api:

[{'alternateLink': 'https://drive.google.com/file/d/1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2/view?usp=drivesdk',
  'appDataContents': False,
  'capabilities': {'canCopy': True, 'canEdit': True},
  'copyRequiresWriterPermission': False,
  'copyable': True,
  'createdDate': '2020-03-05T12:48:59.170Z',
  'downloadUrl': 'https://www.googleapis.com/drive/v2/files/1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2?alt=media&source=downloadUrl',
  'editable': True,
  'embedLink': 'https://drive.google.com/file/d/1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2/preview?usp=drivesdk',
  'etag': '"Wf5UUL5Q1V6zKsD2INFcn7eexnA/MTU4MzQxMjUzOTE3MA"',
  'explicitlyTrashed': False,
  'fileExtension': 'pptx',
  'fileSize': '6303262',
  'headRevisionId': '0B2oE9h6Pke5gSVRxMWw0bkxXT2w1SUlUeXpGMVJ3eW4zREhJPQ',
  'iconLink': 'https://drive-thirdparty.googleusercontent.com/16/type/application/vnd.openxmlformats-officedocument.presentationml.presentation',
  'id': '1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2',
  'kind': 'drive#file',
  'labels': {'hidden': False,
             'restricted': False,
             'starred': False,
             'trashed': False,
             'viewed': True},
  'lastModifyingUser': {'displayName': 'Event wala',
                        'emailAddress': 'event.wala.in@gmail.com',
                        'isAuthenticatedUser': True,
                        'kind': 'drive#user',
                        'permissionId': '06270729261640968336'},
  'lastModifyingUserName': 'Event wala',
  'lastViewedByMeDate': '2020-03-05T13:53:00.453Z',
  'markedViewedByMeDate': '1970-01-01T00:00:00.000Z',
  'md5Checksum': 'f021724ffbe5902fb8b2ddb8f5a88b32',
  'mimeType': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
  'modifiedByMeDate': '2020-03-05T12:48:59.170Z',
  'modifiedDate': '2020-03-05T12:48:59.170Z',
  'originalFilename': 'Big data class 1 .pptx',
  'ownerNames': ['Event wala'],
  'owners': [{'displayName': 'Event wala',
              'emailAddress': 'event.wala.in@gmail.com',
              'isAuthenticatedUser': True,
              'kind': 'drive#user',
              'permissionId': '06270729261640968336'}],
  'parents': [{'id': '0AGoE9h6Pke5gUk9PVA',
               'isRoot': True,
               'kind': 'drive#parentReference',
               'parentLink': 'https://www.googleapis.com/drive/v2/files/0AGoE9h6Pke5gUk9PVA',
               'selfLink': 'https://www.googleapis.com/drive/v2/files/1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2/parents/0AGoE9h6Pke5gUk9PVA'}],
  'quotaBytesUsed': '6303262',
  'selfLink': 'https://www.googleapis.com/drive/v2/files/1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2',
  'shared': False,
  'spaces': ['drive'],
  'thumbnailLink': 'https://lh3.googleusercontent.com/QYMfEjDIuxSPCTKXpLZ_eMdF3UB0dHGdimth4Nl2pVNmXR5inqHxxcPbpcO1MYny4_-frGelf8M=s220',
  'title': 'Big data class 1 .pptx',
  'userPermission': {'etag': '"Wf5UUL5Q1V6zKsD2INFcn7eexnA/x7CgxuXCkkpZiJb0qNSBHTjIAsA"',
                     'id': 'me',
                     'kind': 'drive#permission',
                     'role': 'owner',
                     'selfLink': 'https://www.googleapis.com/drive/v2/files/1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2/permissions/me',
                     'type': 'user'},
  'version': '4',
  'webContentLink': 'https://drive.google.com/uc?id=1F0EIbb0rHUM9n4LFvVPmAvYbmprISbh2&export=download',
  'writersCanShare': True},
 {'alternateLink': 'https://drive.google.com/file/d/0B2oE9h6Pke5gc3RhcnRlcl9maWxl/view?usp=drivesdk',
  'appDataContents': False,
  'capabilities': {'canCopy': True, 'canEdit': True},
  'copyRequiresWriterPermission': False,
  'copyable': True,
  'createdDate': '2020-02-05T18:49:50.787Z',
  'downloadUrl': 'https://www.googleapis.com/drive/v2/files/0B2oE9h6Pke5gc3RhcnRlcl9maWxl?alt=media&source=downloadUrl',
  'editable': True,
  'embedLink': 'https://drive.google.com/file/d/0B2oE9h6Pke5gc3RhcnRlcl9maWxl/preview?usp=drivesdk',
  'etag': '"Wf5UUL5Q1V6zKsD2INFcn7eexnA/MTU4MDkyODU5MDc4Nw"',
  'explicitlyTrashed': False,
  'fileExtension': '',
  'fileSize': '1560010',
  'headRevisionId': '0B2oE9h6Pke5gV2MxNXVLZ0VrUnZyQmZRV1k5NmsyQ1Fwd2xvPQ',
  'iconLink': 'https://drive-thirdparty.googleusercontent.com/16/type/application/pdf',
  'id': '0B2oE9h6Pke5gc3RhcnRlcl9maWxl',
  'kind': 'drive#file',
  'labels': {'hidden': False,
             'restricted': False,
             'starred': False,
             'trashed': False,
             'viewed': True},
  'lastModifyingUser': {'displayName': 'Event wala',
                        'emailAddress': 'event.wala.in@gmail.com',
                        'isAuthenticatedUser': True,
                        'kind': 'drive#user',
                        'permissionId': '06270729261640968336'},
  'lastModifyingUserName': 'Event wala',
  'lastViewedByMeDate': '2020-03-05T13:51:28.432Z',
  'markedViewedByMeDate': '1970-01-01T00:00:00.000Z',
  'md5Checksum': 'df1f432d0c63e3d1ff27e01d10ec8e10',
  'mimeType': 'application/pdf',
  'modifiedDate': '2020-02-05T18:49:50.787Z',
  'originalFilename': 'Getting started',
  'ownerNames': ['Event wala'],
  'owners': [{'displayName': 'Event wala',
              'emailAddress': 'event.wala.in@gmail.com',
              'isAuthenticatedUser': True,
              'kind': 'drive#user',
              'permissionId': '06270729261640968336'}],
  'parents': [{'id': '0AGoE9h6Pke5gUk9PVA',
               'isRoot': True,
               'kind': 'drive#parentReference',
               'parentLink': 'https://www.googleapis.com/drive/v2/files/0AGoE9h6Pke5gUk9PVA',
               'selfLink': 'https://www.googleapis.com/drive/v2/files/0B2oE9h6Pke5gc3RhcnRlcl9maWxl/parents/0AGoE9h6Pke5gUk9PVA'}],
  'quotaBytesUsed': '0',
  'selfLink': 'https://www.googleapis.com/drive/v2/files/0B2oE9h6Pke5gc3RhcnRlcl9maWxl',
  'shared': False,
  'spaces': ['drive'],
  'thumbnailLink': 'https://lh3.googleusercontent.com/s9OogtzMQPBJVT-prnk71j6TGQn6RmMxnRg4e0oaPaZJrV7WXUeuOsMWQkmbKq70VsCUK2o=s220',
  'title': 'Getting started',
  'userPermission': {'etag': '"Wf5UUL5Q1V6zKsD2INFcn7eexnA/EjSS_eKcZ-2uuTY_McacsS-_Ly4"',
                     'id': 'me',
                     'kind': 'drive#permission',
                     'role': 'owner',
                     'selfLink': 'https://www.googleapis.com/drive/v2/files/0B2oE9h6Pke5gc3RhcnRlcl9maWxl/permissions/me',
                     'type': 'user'},
  'version': '4',
  'webContentLink': 'https://drive.google.com/uc?id=0B2oE9h6Pke5gc3RhcnRlcl9maWxl&export=download',
  'writersCanShare': True}]

Теперь я пытаюсь запросить заголовок и в ответ возвращает идентификатор объекта.

Мой код выглядит следующим образом:

from pydrive.drive import GoogleDrive
from pprint import pprint
drive = GoogleDrive(gauth)

upload_folder = 'Big data class 1 .pptx' #Name of the folder where I'd like to upload images
upload_folder_id = None #Id of the folder where I'd like to upload images

    #Check if folder exists. If not than create one with the given name
    #Check the files and folers in the root foled

file_list = drive.ListFile({'q': "'root' in parents and trashed=false"}).GetList()
for file_folder in file_list:
    if file_folder['title'] == upload_folder:
        upload_folder_id = file_folder['id'] #Get the matching folder id
        print ('Image is uploaded to EXISTING folder: ' + file_folder['id'])
        print('Please click this link https://drive.google.com/open?id='+file_folder['id'])
        break #We need to leave this if it's done

Все работает нормально.

Мой вопрос заключается в том, является ли поисковый запрос каким-то частичным текстом вместо полного текста. Как мне действовать.

как если бы я хотел сделать это

upload_folder = 'Big data class' #Name of the folder where I'd like to upload images
upload_folder_id = None

вместо

upload_folder = 'Big data class 1 .pptx' #Name of the folder where I'd like to upload images
upload_folder_id = None

должен возвращать тот же результат, что и предыдущий код.

1 Ответ

0 голосов
/ 05 марта 2020

Вы можете легко найти подстроку в строке с помощью 'in'

if upload_folder in file_folder['title']:

Если вы хотите, чтобы регистр не учитывался

if upload_folder.lower() in file_folder['title'].lower():
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...