Alles nach "irgendwas" bis "irgendwas" p

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

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.
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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'
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

Hmm....
Das wäre ne Möglichkeit aber kann man das auch mit "Wörtern"?
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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...
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

Also in etwa wie in einer HTML Datei, z.B.:

Code: Alles auswählen

<title>hallo world</title>
              /\                 
               |
               |
  diesen Teil print'en
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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.
Benutzeravatar
krisi12345
User
Beiträge: 205
Registriert: Mittwoch 4. März 2009, 16:56
Wohnort: Das schöne München
Kontaktdaten:

Okay, Danke
[url=http://www.pc-tutos.de/Tutorials/Tutorials.htm]Wie verändert man Spiele oder Computer nach Wunsch? www.PC-Tutos.de[/url]
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

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
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Warum nicht so?

Code: Alles auswählen

print re.findall(r"(?s)<title>(.*?)</title>", s)
Stefan
kame
User
Beiträge: 49
Registriert: Samstag 23. Februar 2008, 14:45
Kontaktdaten:

Hallo sma

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

Gruß kame
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

kame hat geschrieben:Kannst du nochmal erklären was re, r und s bedeuten?
RTFM ;-)
Das Leben ist wie ein Tennisball.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

:lol:

Code: Alles auswählen

title = data.split("<title>")[1].split("</title>")[0]
~ Chris
Grüßle.
Antworten