簡體   English   中英

如何將用戶輸入作為字典並在python中顯示其內容

[英]how to take user input as dictionary and display its content in python

我試圖將用戶輸入作為字典並使用以下代碼在屏幕上顯示

import ast
a = input("Please enter a dictionary: ")
d = ast.literal_eval(a)
print d
but this error is occuring

    File "x.py", line 3, in <module>
    d = ast.literal_eval(a)
  File "/usr/lib64/python2.6/ast.py", line 68, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib64/python2.6/ast.py", line 67, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

像這樣轉換為raw_input

import ast
a = raw_input("Please enter a dictionary: ")
d = ast.literal_eval(a)
print d

輸出:

{'a': 1, 'b': 2}

說明:

input()就像執行eval(raw_input(....)) ,在您的情況下ast.literal_eval()字符串轉換為dict, ast.literal_eval()期望字符串不是dict。

另請注意,在python 3.x中,沒有raw_input()因為它已轉換為input()

您也可以參考這篇文章

ast.literal_eval用於將字符串轉換為dict對象,根據我的猜測,您正在插入{'a':1,'b':1}(字典類型),然后嘗試在其上使用ast.literal_eval。 當您將dict傳遞到接受string的函數時,它將給出錯誤。 如果要將字典作為字符串,請使用“ {'a':1,'b':1}”

>>> import ast
>>> a = input("Please enter a dictionary: ")
Please enter a dictionary: {'a':1,'b':2}
>>> d = ast.literal_eval(a)

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    d = ast.literal_eval(a)
  File "/usr/lib/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string

>>> a = input("Please enter a dictionary: ")
Please enter a dictionary: "{'a':1,'b':2}"
>>> a
"{'a':1,'b':2}"
>>> d = ast.literal_eval(a)
>>> d
{'a': 1, 'b': 2}

我編輯了您的代碼檢查差異。

import ast
a = input('Please enter a dictionary:')
d = ast.literal_eval(str(a))
print d

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM