我是一个完全的新手,试图教自己Python的个人成长和发展。所以请你对我放松点。(如果有什么生物学上的问题,我很乐意回报你!)
我试图用PyCharm CE在MacOSX (10.14.2 Mojave)上编写一个程序来完成以下工作:
1)通过从源复制/粘贴,让用户一次输入多行文本。例如:
玛丽和贝丝
转到
公园。
2)将所有行连接为一个,替换空格\n,如下所示:
玛丽和贝丝去公园了。
我已经做了大量的阅读,我发现让用户同时输入多行文本的一种更好的方法是使用sys.stdin.readlines(),确保用户用Control调用文件的末尾。到目前为止,我想出了以下几点
import sys
print('''What is the text that you would like to enter?
(press command-d at the end)\n''')
orig_text = sys.stdin.readlines()
one_string = "".join(orig_text)
one_string = one_string.replace('\n','')
print(one_string)到目前为止,one_string打印得很好,“玛丽和贝丝去了公园.”
当我使用一个常规的input()函数时,问题就在代码的后面.
search_word = input('Which word would you like to replace?')
print(search_word)我得到以下错误消息:EOFError: EOF在读取一行时
我见过其他有类似问题的人发的帖子,一些答案表明我试着.
sys.stdin.close()
sys.stdin = open('/dev/tty')
search_word = input('Which word would you like to replace?')
print(search_word)我试过了,但是现在我得到了以下错误:OSError: Errno 6设备没有配置:'/dev/tty'。我还尝试了sys.stdin.flush(),但没有结果。
此时,我放弃了,并决定问专业人士:( a)是否有更好的方法让用户复制并将多行文本粘贴到程序中;( b)如果到目前为止,我的方法还好,我如何摆脱OSError而不破坏我的计算机?
提前一吨谢谢!马里亚诺
发布于 2020-05-12 07:00:21
sys.stdin.readline()不是一个好的解决方案。
您可以使用fileinput模块:
import fileinput
for line in fileinput.input():
... code ...fileinput将循环遍历命令行参数中指定为文件名的输入中的所有行,如果不提供参数,则遍历标准输入。
您的代码可以由
one_string = "".join(map(str.rstrip, fileinput.input()))删除尾随行提要和空格。
https://stackoverflow.com/questions/61745258
复制相似问题