Python 2.7 string

0

Witam

Mam na przykład taki program:

 
from random import randint

a = randint(1,9)*"hm"+'"something"'
print(a)

W jaki sposób mogę za każdym razem usuwać wszystko do momentu wystąpienia pierwszego cudzysłowu? Czyli chcę uzyskać zawsze "something" bez żadnych dodatków występujących wcześniej. Gdyby tych liter występujących przed "something" było zawze tyle samo, mógłbym użyć np.
print(a[5:])
Niestety, gdy ilość tych liter występujących przed "something" jest przypadkowa to nie mogę tego użyć. Ma ktoś pomysł jak to mo≥żna zrobić?

2

A skąd wiesz gdzie zaczyna sie twoje "something"?

0

Właśnie chodzi o to, że nie wiem jaka będzie ilość stringów "hm" przed '"something"', więc nie moge określić pozycji gdzie zaczyna się '"something"'. Tak jak pisałem, jest to skomplikowany przykład.

0

Nie rozumiesz. Ja nie pytam o to. Ja pytam po czym poznajesz że masz miejsce gdzie ma nastąpić podział. Pierwszy cudzysłów jest markerem?

x = 'ala ma kota a sierotka ma "rysia"'
print(x[x.index('"'):])

http://ideone.com/FOyIsy

1

Ma się wypisać tylko "something", a więc wszystko od pierwszego cudzysłowu. Np. jak wylosuje mi się 3x powtórzenie stringu "hm", to będzie to wyglądało 'hmhmhm"something"', a jak wylosuje mi się 5x powtórzenie stringu "hm", to będzie to wyglądało 'hmhmhmhmhm"something"' i chciałbym z obu przypadków uzyskać tylko '"something"'. Można by to zrobić pisząc
print(a[-11:])
ale szukam na to jakiejś innej metody, na wypadek gdyby za stringiem '"something"' też losowała się przypadkowa ilość stringów.

1

I co ci nie odpowiada w rozwiazaniu u góry? Jak sie boisz że od końca też będą śmieci to możesz
x[x.index('"'):x.rindex('"')] względnie +-1 dla tych indeksów jeśli chcesz/nie chcesz uwzględniach cudzysłowu.

1

Możesz też zrobić to splitem:

a = 'haha\"costam'
a = a.split('"')[0] # tutaj wpisujesz to co ma oddzielac 1 od 2
print(a)

1 użytkowników online, w tym zalogowanych: 0, gości: 1