如何将多行文本粘贴到Python输入中

8

我目前有以下输入行的代码:

rawdata = raw_input('please copy and paste your charge discharge data')

使用Enthought GUI与IPython一起运行我的脚本时,我可以很好地复制和粘贴预格式化文本,其中包含\t和\n。但是,在尝试将数据粘贴到脚本的终端样式版本时,它会尝试处理每行数据而不是接受它作为批量数据。有什么帮助吗?
更相关的代码行:
rawed = raw_input('Please append charge data here: ')     
    time, charge = grab_and_sort(rawed)

def grab_and_sort(rawdata):

    rawdata = rawdata.splitlines()
    ex = []
    why = []

    for x in range(2 , len(rawdata)):  
        numbers = rawdata[x].split('\t')
        ex.append(numbers[0])
        why.append(numbers[1])

    ex = array(ex)    
    why = array(why)  

    return (ex, why)

1
它如何知道何时停止读取输入?是空行、停用词还是类似的东西? - TigerhawkT3
添加了一些更相关的数据。我不知道它是如何知道停止读取输入的? - Adam Schulz
raw_inputinput 在遇到换行符时停止等待键盘输入,你可以通过按下回车键来得到这个换行符。这个换行符不会被包含在输出中。如果你想让你的数据包含换行符,你需要确定如何告诉程序停止等待输入,然后让程序一直要求输入,直到满足这个条件为止。 - TigerhawkT3
@AdamSchulz 欢迎来到 StackOverflow。虽然你的问题以前已经以不同的方式被问过了,但你仍然可以接受或投票支持你认为有帮助的答案。 - user764357
1个回答

5

raw_input接受任何输入,直到输入了一个新行字符。

想要实现你所需的功能最简单的方法是让它接受更多的输入,直到遇到文件结尾。

print("please copy and paste your charge discharge data.\n"
      "To end recording Press Ctrl+d on Linux/Mac on Crtl+z on Windows")
lines = []
try:
    while True:
        lines.append(raw_input())
except EOFError:
    pass
lines = "\n".join(lines)

然后对整个文本批处理。

1
我的shell中Ctrl-D无法停止输入。 - TigerhawkT3
你使用什么Shell? - user764357
在cmd和Powershell上都试过了。 - TigerhawkT3
1
Windows操作系统有不同的“EOF”键命令,我已经更新了答案。 - user764357

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接