我已經定義了一個需要3個參數的函數,其中一個參數必須是一個列表。 我發現的一種解決方案只有在列表由整數構成時纔有效,這不一定是這種情況(類型可以在同一列表中變化)。 如何請求用戶的列表類型輸入?例如:當輸入類似[1,2,3]的東西時,它被認爲是一個列表?如何在Python中請求用戶的列表輸入?
回答
這裏有一種方法:
$ cat foo.py
import sys
input1 = sys.argv[1]
input2 = sys.argv[2]
print('Before\n-------')
print('input1:{},type_of_input1:{}'.format(input1, type(input1)))
print('input2:{},type_of_input2:{}'.format(input2, type(input2)))
print('After\n-------')
input1 = input1.split(' ')
print('input1:{},type_of_input1:{}'.format(input1, type(input1)))
print('input2:{},type_of_input2:{}'.format(input2, type(input2)))
$
執行輸出
$ python foo.py 'foo bar' bat
Before
-------
input1:foo bar,type_of_input1:<type 'str'>
input2:bat,type_of_input2:<type 'str'>
After
-------
input1:['foo', 'bar'],type_of_input1:<type 'list'>
input2:bat,type_of_input2:<type 'str'>
$
如果你完全信任用戶的輸入,你可以只使用eval()
。假設用戶輸入字符串[1, 2, 3]
:
x = input() # Python 3, use raw_input for Python 2
y = eval(x) # Dangerous, don't use with untrusted input
print(y)
# [1, 2, 3]
print(len(y))
# 3
更新:
ast.literal_eval
這裏是一個更好的選擇。
import ast
x = input() # Python 3, use raw_input for Python 2
y = ast.literal_eval(x)
print(y)
# [1, 2, 3]
print(len(y))
# 3
'eval'是一個危險的想法...只是等待別人輸入'__import __( 「shutil」)。rmtree' – donkopotamus
同意,這就是爲什麼我提到它在我的答案中是危險的。如果意圖是作者在本地交互式運行腳本,則不會比shell提示更危險。 – Scovetta
但爲什麼在這種情況下建議'eval'而不是'ast.literal_eval'? – donkopotamus
保持簡單和安全使用input
和輸入轉換成列表自己:
import re
re.sub("[^\w]", " ", input('-->')).split()
-->This is a string of words converted into a list
output:
['This', 'is', 'a', 'string', 'of', 'words', 'converted', 'into', 'a', 'list']
input
是一個內置的:https://docs.python.org/3/library/functions.html#input
import ast
while True:
s=raw_input("Enter a list: ")
s=ast.literal_eval(s)
if not isinstance(s, list):
print "Nope! {} is a {}".format(s, type(s))
else:
break
print s
如果你想選擇輸入元組(通過輸入1,2,3
例如)所述用戶的n個添加tuple
到isinstance
:
import ast
while True:
s=raw_input("Enter a list: ")
s=ast.literal_eval(s)
if not isinstance(s, (list, tuple)):
print "Nope! {} is a {}".format(s, type(s))
else:
break
- 1. 如何讓我的代碼再次請求用戶輸入python
- 2. 如何使用Python 3.x請求用戶輸入?
- 3. 如何在Python中將用戶輸入存儲到列表中
- 4. 如果python中有錯誤,請求用戶重新輸入
- 5. 如何用python中的用戶輸入列表更新json?
- 6. 請求用戶輸入python中的有限時間
- 7. CakePHP:請求用戶在輸入帳戶時輸入密碼
- 8. 如何保存列表中的用戶輸入?-Python
- 9. 如何在用戶輸入中更改python中的行列
- 10. 如何通過用戶輸入添加到python列表中
- 11. 如何在Python中將變量傳遞給輸入請求?
- 12. Python-將用戶輸入變成列表
- 13. 您如何請求使用Rx的用戶輸入?
- 14. 如何在發送用戶請求之前注入HTTP請求
- 15. 如何製作用戶輸入到Python的輸入字符串列表?
- 16. python列表中的輸入
- 17. 要求在輸入列表?
- 18. 如何從Python模塊根據用戶輸入打開列表
- 19. Python:如何將用戶輸入轉換爲列表
- 20. Python請求輸入的ID從形式
- 21. 使用expressjs將post請求中的表單輸入注入get請求
- 22. 如何在python請求中發送列表GET
- 23. 如何使用eval將用戶輸入放入列表中?
- 24. 電報機器人,如何請求用戶輸入?
- 25. 如何在Python請求中使用cookie
- 26. Http請求不列入取輸入值
- 27. 用戶在TFS2010中輸入程序功能請求
- 28. 突破列表中的用戶輸入
- 29. 如何批量添加用戶的輸入到Python中的列表?
- 30. 如何在bash中提示用戶輸入?請修復我的Python/bash Spanglish
閱讀有關[ast.literal_eval](https://docs.python.org/2/library/ast.html #ast.literal_eval) – dawg
這個問題有什麼關係? –
是一個問題:如何從用戶請求列表類型輸入? – gregory