IBM WatsonのNatural Language Understanding APIを使用してURLからキーワードおよびエンティティを取り戻しています。 JSONレスポンスを繰り返して、すべてのキーワードとエンティティを取得し、results.htmlファイルに値を設定します。IBM Watson API Pythonの結果を反復処理するときにエラーが発生する
私は、application.pyファイルとjinjaを使用するresults.htmlファイルの結果を反復しようとしています。
helpers.pyファイルはjson.dumpを返し、結果を反復処理できるようにapplication.pyファイルに送信しています。
しかし、私は次のエラーを取得しています:
TypeError: string indices must be integers
私はこの問題を解決するためjson.loadと文字列と辞書対json.dumpを見てきましたが、私は得ることができません作業するコード。詳細が必要な場合は、私に知らせてください。私は今年の終わりまでにこれを理解する必要があります。前もって感謝します。ここで
はここhelpers.pyファイルである私のapplications.pyファイル
@app.route("/URL", methods=["GET", "POST"])
def URL():
"""Analyze URL."""
# if user reached route via POST (as by submitting a form via POST)
if request.method == "POST":
# if nothing was entered return apology
if not request.form.get("URL"):
return apology("please enter a URL")
URL = request.form.get("URL")
# analyze URL using analyze function in helpers.py
results = analyze(request.form.get("URL"))
for item in results:
keywords = item["keywords"]["text"]
entities = item["entities"]["text"]
return render_template("results.html", results=results, URL=URL)
# check if URL is valid
if not results:
return apology("this is not a valid URL")
else:
return render_template("url.html")
です。ここで
def analyze(URL):
natural_language_understanding = NaturalLanguageUnderstandingV1(
version='2017-02-27',
username='MUSTGETYOURUSERNAME',
password='MUSTGETYOURPASSWORD')
response = natural_language_understanding.analyze(
url=URL,
features=Features(entities=EntitiesOptions(), keywords=KeywordsOptions()))
return (json.dumps(response, indent=2))
は神社を使用してresults.htmlファイルである:ここで起こっていくつかの混乱があります
[
{
"text": "Android apps",
"relevance": 0.926516
},
{
"text": "Chrome OS",
"relevance": 0.878045
},
{
"text": "Sorry Android fanboys",
"relevance": 0.696885
},
{
"text": "Android tablet",
"relevance": 0.695471
},
{
"text": "absolutely wonderful Android",
"relevance": 0.672889
},
{
"text": "Chrome OS beta",
"relevance": 0.626619
},
{
"text": "Android Police",
"relevance": 0.592994
},
{
"text": "Chrome OS devices",
"relevance": 0.566831
},
{
"text": "count Android",
"relevance": 0.563911
},
{
"text": "dominant Google OS",
"relevance": 0.553724
},
{
"text": "Chrome Unboxed",
"relevance": 0.540076
},
{
"text": "overall tablet sales",
"relevance": 0.511826
},
{
"text": "inexpensive Google rival",
"relevance": 0.498259
},
{
"text": "half incremental improvements",
"relevance": 0.468663
},
{
"text": "standard operating procedure",
"relevance": 0.45946
},
{
"text": "uncommon Chromebook form",
"relevance": 0.456969
},
{
"text": "content consumption machines",
"relevance": 0.451775
},
{
"text": "absolute best pieces",
"relevance": 0.450763
},
{
"text": "content creation ones",
"relevance": 0.450345
},
{
"text": "rich new fusion",
"relevance": 0.446127
},
{
"text": "Amazon Fire tablet",
"relevance": 0.444685
},
{
"text": "selling tablet",
"relevance": 0.444241
},
{
"text": "tablet operating",
"relevance": 0.440434
},
{
"text": "Google Pixelbook",
"relevance": 0.440007
},
{
"text": "Google store",
"relevance": 0.439719
},
{
"text": "cheap tablets",
"relevance": 0.408395
},
{
"text": "immortal highlander",
"relevance": 0.404233
},
{
"text": "disparate OSes",
"relevance": 0.401626
},
{
"text": "laptop space",
"relevance": 0.40117
},
{
"text": "detachable two-in-one",
"relevance": 0.396257
},
{
"text": "pleasant surprises",
"relevance": 0.394027
},
{
"text": "additional oomph",
"relevance": 0.393127
},
{
"text": "Samsung",
"relevance": 0.391534
},
{
"text": "flashy Chromebook",
"relevance": 0.391359
},
{
"text": "sleek Chromebook",
"relevance": 0.390035
},
{
"text": "smaller devices",
"relevance": 0.389106
},
{
"text": "operating systems",
"relevance": 0.388958
},
{
"text": "new feature",
"relevance": 0.388395
},
{
"text": "true multitasking",
"relevance": 0.388097
},
{
"text": "tablet-like device",
"relevance": 0.387175
},
{
"text": "two-in-one Chromebook",
"relevance": 0.385518
},
{
"text": "nightmare fuel",
"relevance": 0.385284
},
{
"text": "mouse-first OS—not",
"relevance": 0.385193
},
{
"text": "parallel tasks",
"relevance": 0.381923
},
{
"text": "budget device",
"relevance": 0.380932
},
{
"text": "iPad",
"relevance": 0.35313
},
{
"text": "news",
"relevance": 0.333007
},
{
"text": "strides",
"relevance": 0.319667
},
{
"text": "iOS",
"relevance": 0.318235
},
{
"text": "thanks",
"relevance": 0.316534
}
]
[
{
"type": "Company",
"text": "Google",
"relevance": 0.385564,
"disambiguation": {
"subtype": [
"AcademicInstitution",
"AwardPresentingOrganization",
"OperatingSystemDeveloper",
"ProgrammingLanguageDeveloper",
"SoftwareDeveloper",
"VentureFundedCompany"
],
"name": "Google",
"dbpedia_resource": "http://dbpedia.org/resource/Google"
},
"count": 9
},
{
"type": "Company",
"text": "Samsung",
"relevance": 0.204475,
"disambiguation": {
"subtype": [],
"name": "Samsung",
"dbpedia_resource": "http://dbpedia.org/resource/Samsung"
},
"count": 4
},
{
"type": "Location",
"text": "Chromebooks",
"relevance": 0.129986,
"disambiguation": {
"subtype": [
"City"
]
},
"count": 2
},
{
"type": "Company",
"text": "Amazon",
"relevance": 0.119948,
"disambiguation": {
"subtype": [],
"name": "Amazon.com",
"dbpedia_resource": "http://dbpedia.org/resource/Amazon.com"
},
"count": 2
},
{
"type": "Location",
"text": "US",
"relevance": 0.109124,
"disambiguation": {
"subtype": [
"Region",
"AdministrativeDivision",
"GovernmentalJurisdiction",
"FilmEditor",
"Country"
],
"name": "United States",
"dbpedia_resource": "http://dbpedia.org/resource/United_States"
},
"count": 1
},
{
"type": "Company",
"text": "Apple",
"relevance": 0.108271,
"disambiguation": {
"subtype": [
"Brand",
"OperatingSystemDeveloper",
"ProcessorManufacturer",
"ProgrammingLanguageDesigner",
"ProgrammingLanguageDeveloper",
"ProtocolProvider",
"SoftwareDeveloper",
"VentureFundedCompany",
"VideoGameDeveloper",
"VideoGamePublisher"
],
"name": "Apple Inc.",
"dbpedia_resource": "http://dbpedia.org/resource/Apple_Inc."
},
"count": 1
},
{
"type": "Quantity",
"text": "$500",
"relevance": 0.0746897,
"count": 1
},
{
"type": "Quantity",
"text": "$50",
"relevance": 0.0746897,
"count": 1
}
]
どのラインがエラーになりますか? – doctorlove
ファイル "/home/ubuntu/workspace/project/application.py"、行70、URL キーワード= item ["keywords"] ["text"] TypeError:文字列インデックスは整数でなければなりません –
「item」は文字列、 'item [" keywords "]'は文字列です。あなたの質問に 'print(item)'の出力を含めれば助けになります。 –