Python 3.x 在python中,当用户输入被任意数量的空格和换行符分隔时,如何获取用户输入?

Python 3.x 在python中,当用户输入被任意数量的空格和换行符分隔时,如何获取用户输入?,python-3.x,input,python-3.6,Python 3.x,Input,Python 3.6,我一直在尝试用任意数量的空格或换行符分隔整数输入。我知道如何获取空间分隔输出和具有换行符的输出。在基于C的语言中,我们不必关心输入在哪里,它在找到输入时会自动接受输入,但我认为Python的情况并非如此(如果我错了,请纠正我)。有人能帮忙吗 我尝试使用While语句直到True,并在其中使用try语句。但它不起作用 a = [] try: while(True): a.append(int(input())) except: pass print(a) 当我输

我一直在尝试用任意数量的空格或换行符分隔整数输入。我知道如何获取空间分隔输出和具有换行符的输出。在基于C的语言中,我们不必关心输入在哪里,它在找到输入时会自动接受输入,但我认为Python的情况并非如此(如果我错了,请纠正我)。有人能帮忙吗

我尝试使用While语句直到True,并在其中使用
try
语句。但它不起作用

a = []
try:
    while(True):
        a.append(int(input()))
except:
    pass
print(a) 
当我输入

12   12
12

它返回一个空列表。如果我删除输入中的int,它会返回一个列表
[12,12]
等等,所以我想我现在明白了。您想接受任意数量的输入,但是否将每个由空格分隔的输入保存为自己的条目?实际上有一个字符串方法。下面是一个示例脚本。这不是最好的,但它很好地演示了该方法

list=[]
string=“用户输入在此处”
splitString=string.split()
对于拆分字符串中的单词:
list.append(word)
打印(列表)
输出:

["user", "input", "goes", "here"]
string.split()方法默认使用空格,但可以指定另一个分隔符,如#符号

List=[]
String=“你好,我的名字是鲍勃”
newString=String.split(“#”)
对于新闻字符串中的word:
list.append(word)
编辑:这是一个完整的工作实现,无论分隔两个输入的内容是空白、换行还是其他任何您想要的内容,它都可以工作

重新导入
列表=[]
尽管如此:
字符串=输入()
如果字符串==“中断”:
打破
splitString=re.split(“[\s |\r\n]”,字符串)
对于拆分字符串中的单词:
list.append(word)
cleanList=[]
对于列表中的单词:
如果单词!='':
cleanList.append(word)
打印(清除列表)
输入:

12 94 17
56
3
输出:

[12, 94, 17, 56, 3]

功能证明:单击

希望您能对本示例有所了解,并添加了我对如何编写代码的个人看法

首先,多空格输入是可以理解的,但不是多行输入。喜欢一个接一个的输入

出于测试和调试目的,建议单独收集用户和处理输入数据

现在,假设您已使用
raw_input
收集用户输入并存储为数据,这在需要收集多行输入时非常方便。请浏览原始输入,Python3和Python2都支持它

>>>
>>> data = '''12
...
... 12       12
...
...
... 12'''
>>> data
'12 \n\n12       12\n\n\n12'
>>> print(data)
12

12       12


12
步骤1:清除所有行分隔符 步骤2:修复多个空格 您的代码有问题 当您输入
12 12
时,应出现以下情况

>>> int('12 12')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '12 12'
>>int('12')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基数为10的int()的文本无效:“12”
由于此代码具有错误的异常处理
除外:
,因此您的用例将按预期返回一个空列表


由于我更改了输入,您可以看到这种差异。

尝试以下方法:尽可能短的方法

a = []
s=input()

while s != '':  
    i = s.split()       
    [a.append(int(j)) for j in i]
    s=input()

print(a)
输入:

1 2 3
4 5
6
[1, 2, 3, 4, 5, 6]
输出:

1 2 3
4 5
6
[1, 2, 3, 4, 5, 6]
您也可以尝试:

1 2 3
4 5
6
[1, 2, 3, 4, 5, 6]

您期望的输出是什么?所以,您希望它持续接受输入,但前提是它是int?我知道您要做什么。但是string.split(“\r\n”)也会使它在换行后接受输入。是的,注释不能有换行符。这很粗糙。我认为这段代码只接受一行中的输入,而不接受下一行的输入(即涉及换行)。如果我的输入是这样的;12 3(下一行)32 12(下一行)3。;此代码将只接受12和3,并将它们附加到列表中,而只接受下一行中的输入。ThanksI可以编辑我的答案以获得完整的工作实现,如果您愿意的话?感谢您的回复,但是在代码的第4行中,splitString已经是字符串列表(因为split方法),split方法不能用于字符串,因此第5行显示错误,错误语句读取:''list'对象没有属性'split''。此操作特别适用于整数。我刚刚意识到,我一直在尝试制作一个可以接受任何输入的程序,而OP明确地说它是针对整数的。我觉得自己像个傻瓜。是的,我专门把输入的数字转换成整数,我想这就是你想要的,这就是他们想要的。我是第一个回答问题的人,我花了一个小时的时间进行头脑风暴,想知道如何支持字符串。如果这是你想要的,请接受ans@MegaEmailman:)对不起,我不是OP。那是@T.P。