如何使用Azure客户端库向认知服务翻译API发送指定JSON输入?
Azure Cognitive Services文本翻译客户端库调用问题解决
你在使用Azure Cognitive Services文本翻译时,直接调用REST API发送data = [{"text":"Good Morning"},{"text":"Good night"}]格式的JSON数据可以成功,但使用Azure官方客户端库调用时报错string index out of range,想知道如何通过客户端库实现对应功能及正确写法。
你的报错代码:
#This is my code. from azure.ai.translation.text import TextTranslationClient client = TextTranslationClient(endpoint, credential) result = client.translate(to=["de"], input=data)
问题原因
Azure文本翻译客户端库的translate方法中,input参数接受的是纯文本字符串列表,而非REST API要求的包含text字段的字典数组。直接传入[{"text":"..."}]格式的数据会导致客户端库解析时出错,抛出string index out of range异常。
解决方案
方案一:调整输入格式为纯文本列表
直接将输入数据转换为字符串列表,符合客户端库的参数要求:
from azure.ai.translation.text import TextTranslationClient # 调整输入格式为纯文本列表 data = ["Good Morning", "Good night"] client = TextTranslationClient(endpoint, credential) result = client.translate(to=["de"], input=data) # 处理翻译结果 for document in result: print(f"原文本: {document.source_text}") print(f"德语翻译: {document.translations[0].text}\n")
方案二:从原有JSON结构中提取文本字段
如果必须保留原有[{"text":"..."}]的数据源格式,可以先提取其中的text字段值组成列表:
from azure.ai.translation.text import TextTranslationClient # 原有JSON格式数据 data = [{"text":"Good Morning"},{"text":"Good night"}] # 提取text字段组成列表 text_list = [item["text"] for item in data] client = TextTranslationClient(endpoint, credential) result = client.translate(to=["de"], input=text_list) # 处理翻译结果 for idx, document in enumerate(result): print(f"原文本: {data[idx]['text']}") print(f"德语翻译: {document.translations[0].text}\n")
内容的提问来源于stack exchange,提问作者Amol Kamble
相关产品推荐
相关产品推荐

