0

I have a script I've been testing out Google's DLP with that has suddenly stopped working:

def redact_text(text_list):
    service = build_client()
    content = service.content()
    items = []
    for text in text_list:
        items.append({
          "type": "text/plain",
          "value": text
        })

    data = { "items":items,
        "inspectConfig": {
            "minLikelihood": "LIKELIHOOD_UNSPECIFIED",
            "maxFindings": 0,
            "includeQuote": False
        },
        "replaceConfigs": [{'replaceWith': redacts[info], 'infoType':{'name': info}} for info in redacts.keys()]
    }
    request = content.redact(body=data)
    response = request.execute()
    return response


def build_client():
    scopes = ['https://www.googleapis.com/auth/cloud-platform']
    credentials = ServiceAccountCredentials.from_json_keyfile_name('cred_name.json', scopes=scopes)
    http_auth = credentials.authorize(Http())

    service = build('dlp', 'v2beta1', http=http_auth)
    return service


if __name__ == '__main__':
    test_list = []
    test_text = "My name is Jenny and my number is (555) 867-5309, you can also email me at notarealemail@fakegmail.com another email you can reach me at is email@email.com.  "
    task = "inspect"
    test_list.append(test_text)
    test_list.append("bill (555) 202-4578, that one place down the road some_email@notyahoo.com")
    print(test_list)
    result = redact_text(test_list)
    print(result)

Normally I'll get back a response, but today I've been getting back:

Traceback (most recent call last):
  File "test_dlp.py", line 82, in <module>
    response = redact_text(text_list)
  File "test_dlp.py", line 42, in redact_text
    content = service.content()
AttributeError: 'Resource' object has no attribute 'content'

I've made no changes to this script, and it has worked previously.

4

1 回答 1

3

5 月 1 日,Beta api 被弃用,因为 GA 版本现已可用。

在大多数情况下,您的脚本可以正常工作,但切换到版本“v2”。

需要更改的脚本的第二部分是 ContentItem “aka items”现在只是一个项目,而不是列表。

您可以使用单独的请求发送

item = {'value': content_string}

或者,如果您仍希望将其批量处理为单个请求,则可以使用表格。(我没有运行这个,所以请原谅编译错字,但 api 表面是这样的。)

var rows = []
var headers = [{"name": "column1"}]
for text in text_list:
  rows.append({
    "string_value": text,
  })

item = {
  "table": {
    "headers": headers,
    "rows": rows
  }
}
 data = { "item":item,
          "inspectConfig": {
            "minLikelihood": "LIKELIHOOD_UNSPECIFIED",
            "maxFindings": 0,
            "includeQuote": False
        },
        "replaceConfigs": [{'replaceWith': redacts[info], 'infoType':{'name': info}} for info in redacts.keys()]
    }
于 2018-05-04T19:50:17.857 回答