【问题标题】:How to grab bold/italic text from Google Doc with API (Python)如何使用 API (Python) 从 Google Doc 中获取粗体/斜体文本
【发布时间】:2021-03-08 19:45:30
【问题描述】:

目前正在尝试创建一个 python 脚本来检查谷歌文档中的各种 SEO 页面指标。要执行我的检查,我需要能够拆分 H1、H2-H4、粗体文本等,这是我 previous request for help 关于拆分各种标题的后续问题。

以下是我拉标题的方式:

def read_paragraph_element(element):
    text_run = element.get('textRun')
    if not text_run:
        return ''
    return text_run.get('content')


def read_structural_elements(elements):    
    for value in elements:
        if 'paragraph' in value and value['paragraph']['paragraphStyle']['namedStyleType'] == 'HEADING_2':
            elements = value.get('paragraph').get('elements')
            for elem in elements:
                sub_headings += read_paragraph_element(elem)

当我尝试对粗体或斜体文本遵循类似的逻辑时,我最终得到一个空白列表:

    for value in elements:
        if 'paragraph' in value and value['paragraph']['paragraphStyle']['namedStyleType']['paragraphElement']['textStyle'] == 'bold':
            elements = value.get('paragraph').get('elements')
            for elem in elements:
                sub_headings += read_paragraph_element(elem)

我对编码/python 还很陌生,正在努力寻找从这里开始的地方。

【问题讨论】:

    标签: python-3.x google-api google-docs google-docs-api


    【解决方案1】:

    如果您在代码中打印value 的内容,它将显示如下内容:

    {
       "startIndex":1,
       "endIndex":28,
       "paragraph":{
          "elements":[
             {
                "startIndex":1,
                "endIndex":16,
                "textRun":{
                   "content":"THIS IS JUST A ",
                   "textStyle":{
                      
                   }
                }
             },
             {
                "startIndex":16,
                "endIndex":21,
                "textRun":{
                   "content":"TEST ",
                   "textStyle":{
                      "bold":true
                   }
                }
             },
             {
                "startIndex":21,
                "endIndex":27,
                "textRun":{
                   "content":"STRING",
                   "textStyle":{
                      "bold":true,
                      "italic":true
                   }
                }
             },
             {
                "startIndex":27,
                "endIndex":28,
                "textRun":{
                   "content":"\n",
                   "textStyle":{
                      "italic":true
                   }
                }
             }
          ],
          "paragraphStyle":{
             "namedStyleType":"NORMAL_TEXT",
             "direction":"LEFT_TO_RIGHT"
          }
       }
    }
    

    要确定文本是粗体还是斜体格式,您应该检查elements对象内每个元素的textStyle。

    修改后的脚本:

    发件人:

    def read_paragraph_element(element):
        text_run = element.get('textRun')
        if not text_run:
            return ''
        return text_run.get('content')
    

    收件人:

    def read_paragraph_element(element):
        text_run = element.get('textRun')
        if not text_run:
            return ''
        else:
            style = text_run.get('textStyle')
            if style.get('bold') or style.get('italic'):
                return text_run.get('content')
            return ''
    

    注意: 上面的脚本只会抓取粗体或斜体格式的文本。

    示例:

    文档:

    输出:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      相关资源
      最近更新 更多