2013-07-18 186 views
2

我试图创建一个程序,用户在其中输入一个字符串列表,每个列表单独一行。我希望能够返回,例如,第二行中的第三个单词。下面的输入会返回“蓝色”。从另一个列表创建一个列表 - Python

input_string("""The cat in the hat 
Red fish blue fish """) 

目前我有这样的:

def input_string(input): 
    words = input.split('\n') 

这样我就可以输出一定行用字[N],但如何做输出特定的词在特定行?我一直试图实现能够键入单词[1] [2],但我尝试创建一个多维数组失败了。

我一直试图分裂每个单词[n]现在几个小时,谷歌没有帮助。我很抱歉,如果这是完全明显的,但我刚刚开始使用Python几天前,并完全卡住。

+0

你需要一个更多的空间分割。 –

+1

在换行符上分割会给出一个行列表,然后在空白处分割一行以获得该行上的单词列表。 – Keith

回答

3

它很简单,只要:

input_string = ("""The cat in the hat 
Red fish blue fish """) 

words = [i.split(" ") for i in input_string.split('\n')] 

它产生:

[['The', 'cat', 'in', 'the', 'hat', ''], ['Red', 'fish', 'blue', 'fish', '']] 
+0

非常感谢你!这是完美的。 :)) – eltb

1

这听起来像你想拆分os.linesep(当前操作系统的行分隔符),然后再拆分空间。例如:

import os 

def input_string(input) 
    words = [] 
    for line in input.split(os.linesep): 
     words.append(line.split()) 

这会给你一个每行的单词列表清单。

+1

你可能不应该使用'os.linesep':http://stackoverflow.com/a/6165711/691859 – 2rs2ts

+0

呵呵,这真是太棒了,谢谢。 – Tom

0

尝试这种情况:

lines = input.split('\n') 
words = [] 
for line in lines: 
    words.append(line.split(' ')) 

英文:

  1. 常量列出行列表,这将类似于从文件中读取。
  2. 循环遍历每行,将其拆分成单词列表
  3. 将单词列表追加到另一个列表。这会产生一个列表清单。
1

还有一种叫做splitlines()的方法。它将在换行符上分割。如果你不传递任何参数,它将删除换行符。如果你通过它True,它会保持在那里,但分开线路。

words = [line.split() for line in input_string.splitlines()]