Hunter Guzman
Hunter Guzman

Reputation: 1

How would I execute this? Python

I am pretty new to python and would like to know how to write a program that asks the user to enter a string that contains the letter "a". Then, on the first line, the program should print the part of the string up to and including the certain letter, and on the second line should be the rest of the string. For example...

Enter a word: Buffalo
Buffa 
lo

This is what I have so far :

text = raw_input("Type something: ")
left_text = text.partition("a")[0]
print left_text

So, I have figured out the first part of printing the string all the way up to the certain letter but then don't know how to print the remaining part of the string.

Any help would be appreciated

Upvotes: 0

Views: 203

Answers (3)

Nikil Munireddy
Nikil Munireddy

Reputation: 328

First find the indices of the character in the given string, then print the string accordingly using the indices.

Python 3

string=input("Enter string")
def find(s, ch):
    return [i for i, ltr in enumerate(s) if ltr == ch]
indices=find(string, "a")

for index in indices[::-1]:
    print(string[:index+1])

print(string[indices[-1]+1:])

Upvotes: 0

Ghantey
Ghantey

Reputation: 636

You should have some knowledge about slicing and concatenating string or list. You can learn them here Slicing and Concatenating

word = raw_input('Enter word:')  # raw_input in python 2.x and input in python 3.x

split_word = raw_input('Split at: ')

splitting = word.partition(split_word)


'''Here lets assume,

   word = 'buffalo'
   split_word = 'a'

   Then, splitting variable returns list, storing three value,
           ['buff', 'a', 'lo']

   To get your desire output you need to do some slicing and concatenate some value .
'''

output = '{}\n{}'.join(splitting[0] + splitting[1], splitting[2])
print(output) 

Upvotes: 0

Charles
Charles

Reputation: 3316

If what you want is the first occurrence of a certain character, you can use str.find for that. Then, just cur the string into two pieces based on that index!

In python 3:

split_char = 'a'
text = input()
index = text.find(split_char)
left = text[:-index]
right = text[-index:]
print(left, '\n', right)

I don't have a python2 on hand to make sure, but I assume this should work on python 2:

split_char = 'a'
text = raw_input()
index = text.find(split_char)
left = text[:-index]
right = text[-index:]
print left + '\n' + right)

Another option that is far more concise is to use

left_text, sep, right_text = text.partition("a")
print (left_text + sep, '\n', right_text)

and then as suggested in the comments, thanks @AChampion !

Upvotes: 2

Related Questions