Seite 1 von 1

Alles nach "irgendwas" bis "irgendwas" p

Verfasst: Donnerstag 9. Juli 2009, 19:13
von krisi12345
HI!
Ich habe eine Frage:
Wenn Ich einen String habe bzw. eine geöffnete Datei.
Dieser String könnte mehrzeilig sein. Und wie kann man das innere von diesem String z.B. "anfang hier das innere ende" anzeigen?
Danke im Voraus.

Verfasst: Donnerstag 9. Juli 2009, 19:26
von ms4py
Ich vermute einfach mal, dass du einen Teilstring aus deinem String auschneiden willst. Wenn nicht, formulier deine Frage doch bitte mal in verständlichem deutsch :x

Teilstring ausschneiden geht so:

Code: Alles auswählen

>>> s = "Hello World!"
>>> s[2:5]
'llo'

Verfasst: Donnerstag 9. Juli 2009, 19:29
von krisi12345
Hmm....
Das wäre ne Möglichkeit aber kann man das auch mit "Wörtern"?

Verfasst: Donnerstag 9. Juli 2009, 19:35
von ms4py

Code: Alles auswählen

>>> s.split()
['Hello', 'World!']
>>> s.split()[1] # 2.Wort des Strings
'World!'
Ist das eine Antwort auf deine Frage?!
Ansonsten formulier mal eine klare Problemstellung.
Langsam nervts...

Verfasst: Donnerstag 9. Juli 2009, 19:42
von krisi12345
Also in etwa wie in einer HTML Datei, z.B.:

Code: Alles auswählen

<title>hallo world</title>
              /\                 
               |
               |
  diesen Teil print'en

Verfasst: Donnerstag 9. Juli 2009, 19:48
von ms4py

Code: Alles auswählen

>>> s = '<title>hallo world</title>'
>>> s.lstrip('<title>').rstrip('</title>')
'hallo world'
Wenn du "richtiges" HTML verarbeiten willst, sollstest du dir einen HTML Parser anschauen, z.B. http://pypi.python.org/pypi/BeautifulSoup/3.0.7a

Ansonsten geb endlich mal eine konkrete Problemstellung und nicht ein Beispiel.

Verfasst: Donnerstag 9. Juli 2009, 19:50
von krisi12345
Okay, Danke

Verfasst: Freitag 10. Juli 2009, 06:37
von rayo
Hi

Also vergiss lstrip und rstrip für diese Aufgabe gleich wieder. Bei diesen Funktionen wird nicht ein String zum wegschneiden übergeben sondern eine Menge von Zeichen. Das heisst es werden folgende Zeichen am Anfang/Ende vom String weggelöscht: <>eilt.

Code: Alles auswählen

>>> s = '<title>title ist hallo world</title>'
>>> s.lstrip('<title>').rstrip('</title>')
' ist hallo world'
Da wird also auch locker mehr weggelöscht als nur <title>.

Du könntest zum Beispiel s.find nehmen um die Position vom Start und Ende herauszufinden.

Code: Alles auswählen

start_pos = s.find('<title>')+len('<title>')
end_pos = s.find('</title>', start_pos)
print s[start_pos:end_pos]
Falls es aber mehr sein soll als das, verwende wie schon gesagt ein HTML-Scraper.

Gruss

Verfasst: Samstag 11. Juli 2009, 09:33
von sma
Warum nicht so?

Code: Alles auswählen

print re.findall(r"(?s)<title>(.*?)</title>", s)
Stefan

Verfasst: Samstag 11. Juli 2009, 21:07
von kame
Hallo sma

Kannst du nochmal erklären was re, r und s bedeuten?

Gruß kame

Verfasst: Samstag 11. Juli 2009, 21:20
von EyDu
kame hat geschrieben:Kannst du nochmal erklären was re, r und s bedeuten?
RTFM ;-)

Verfasst: Sonntag 12. Juli 2009, 02:23
von theliquidwave
:lol:

Code: Alles auswählen

title = data.split("<title>")[1].split("</title>")[0]
~ Chris