eltb
eltb

Reputation: 107

Creating a list from another list - Python

I'm trying to create a program where the user inputs a list of strings, each one in a separate line. I want to be able to be able to return, for example, the third word in the second line. The input below would then return "blue".

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

Currently I have this:

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

So I can output a certain line using words[n], but how do output a specific word in a specific line? I've been trying to implement being able to type words[1][2] but my attempts at creating a multidimensional array have failed.

I've been trying to split each words[n] for a few hours now and google hasn't helped. I apologize if this is completely obvious, but I just started using Python a few days ago and am completely stuck.

Upvotes: 3

Views: 4138

Answers (4)

2rs2ts
2rs2ts

Reputation: 11026

There is a method called splitlines() as well. It will split on newlines. If you don't pass it any arguments, it will remove the newline character. If you pass it True, it will keep it there, but separate the lines nonetheless.

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

Upvotes: 1

J David Smith
J David Smith

Reputation: 4810

Try this:

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

In english:

  1. construct a list of lines, this would be analogous to reading from a file.
  2. loop over each line, splitting it into a list of words
  3. append the list of words to another list. this produces a list of lists.

Upvotes: 0

jabaldonedo
jabaldonedo

Reputation: 26572

It is as simple as:

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

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

It generates:

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

Upvotes: 5

Tom
Tom

Reputation: 22831

It sounds like you want to split on os.linesep (the line separator for the current OS) before you split on space. Something like:

import os

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

That will give you a list of word lists for each line.

Upvotes: 1

Related Questions