如何简单地从标准输入读取由空格或空格分隔的输入

发布于 2024-09-13 14:13:37 字数 384 浏览 4 评论 0原文

你好,我正在尝试学习Python, 在 C++ 中,从 stdin 读取字符串我只是这样做

string str;
while (cin>>str)
    do_something(str)

,但在 python 中,我必须使用

line = raw_input()

then

x = line.split()

然后我必须循环遍历列表 x 来访问每个 str 到 do_something(str)

这看起来很多代码只是为了获取由空格或空格分隔的每个字符串 所以我的问题是,有没有更简单的方法?

Hello I'm a trying to learn python,
In C++ to read in string from stdin I simply do

string str;
while (cin>>str)
    do_something(str)

but in python, I have to use

line = raw_input()

then

x = line.split()

then I have to loop through the list x to access each str to do_something(str)

this seems like a lot of code just to get each string delimited by space or spaces
so my question is, is there a easier way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凹づ凸ル 2024-09-20 14:13:37

Python 不会为您特殊处理这种特定形式的输入,但是为其创建一个小生成器当然很简单:

def fromcin(prompt=None):
  while True:
    try: line = raw_input(prompt)
    except EOFError: break
    for w in line.split(): yield w

然后,在您的应用程序代码中,您使用 for 语句进行循环(通常是在应用程序代码级别循环的最佳方法):

for w in fromcin():
  dosomething(w)

Python doesn't special-case such a specific form of input for you, but it's trivial to make a little generator for it of course:

def fromcin(prompt=None):
  while True:
    try: line = raw_input(prompt)
    except EOFError: break
    for w in line.split(): yield w

and then, in your application code, you loop with a for statement (usually the best way to loop at application-code level):

for w in fromcin():
  dosomething(w)
紫瑟鸿黎 2024-09-20 14:13:37

确实没有一种“更简单”的方法,因为 Python 没有像 C++ 的 iostream 那样的内置格式化字符串函数。

也就是说,您可以通过组合操作来缩短代码:

for str in raw_input().split():
   do_something(str)

There isn't really an "easier" way, since Python doesn't have built-in formatted string functions like C++ does with iostream.

That said, you could shorten your code by combining the operations:

for str in raw_input().split():
   do_something(str)
我喜欢麦丽素 2024-09-20 14:13:37
map(do_something, line.split())
map(do_something, line.split())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文