3

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.

Lennart Regebro
  • 167,292
  • 41
  • 224
  • 251
eltb
  • 107
  • 3
  • 10

4 Answers4

5

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', '']]
jabaldonedo
  • 25,822
  • 8
  • 77
  • 77
1

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.

Tom
  • 22,301
  • 5
  • 63
  • 96
1

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()]
2rs2ts
  • 10,662
  • 10
  • 51
  • 95
0

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.
J David Smith
  • 4,780
  • 1
  • 19
  • 24