搜索不匹配谷歌日历API查询中的单个字符?

2024-04-24 16:37:25 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的谷歌日历里,我有一个叫做“那是什么?”?如果我运行以下查询,则会正确找到事件:

eventsResult = service.events().list(
    calendarId=CALENDAR_ID,
    q="Nothing.").execute()

但是,如果我试图查找完整的标题,包括单引号,则找不到:

eventsResult = service.events().list(
    calendarId=CALENDAR_ID,
    q="What's that? Nothing.").execute()

我很确定这不是字符串中有错误字符的问题,因为我尝试从日历本身和第一个(工作)请求的结果复制整个标题,但没有效果。有什么转义或编码我应该做的吗?你知道吗

更新:

问题不限于单引号。一个名为“的事件”aa.bb.cc公司与“aa.b.cc”一样,未发现任何问题。但是,找不到“a.b.cc”。没有圆点的情况也是如此;找到了“aa b cc”,但没有找到“a b cc”。这似乎是一个单一字符的问题,但我还不知道它到底发生在什么时候。。。你知道吗


Tags: id标题executeservice事件events字符calendar
2条回答

尝试将引用作为字符串的一部分发送,如:

eventsResult = service.events().list(
    calendarId=CALENDAR_ID,
    q='"Nothing."').execute()

查询通常搜索用空格分隔的词 q=术语1术语2术语3,如所述here。你知道吗

当它寻找q=aa b cc时,第一项是“aa”。搜索可能更容易,因为参数'aa'可能不会有太多重复。但是让它搜索q=abcc,使得查找包含a和b的所有元素有点模棱两可

在我共享的文档中,还提到要进行精确的搜索查询,必须使用引号:q=“a b cc”。这样,整个字符串被视为一个术语。你知道吗

我在api资源管理器中尝试了这种方法,并找到了那个事件。如果没有引号(如您所述),api就找不到它。你知道吗

str = "\"What's that? Nothing\".\""
eventsResult = service.events().list(calendarId='primary', q=str).execute()        

events = eventsResult.get('items', [])

if not events:
    print('No upcoming events found.')
for event in events:
    start = event['start'].get('dateTime', event['start'].get('date'))
    print(start, event['summary'])

请看“str”。这就是你想要的。这个的输出

Finding the calendar events
2015-09-16T13:30:00+03:00 "What's that? Nothing."

相关问题 更多 >