Vinnaren i pepparkakshustävlingen!
2010-05-13, 23:42
  #1
Medlem
count4rights avatar
Ponera att du bygger en sökfunktion som söker igenom artiklar. Sökresultatet skall visas med de t.ex. de tjugo första orden i artikeln. Med mina för närvarande ganska begränsade kunskaper i python hade jag löst det så här:

Kod:
eintext '''Sed et purus neque, molestie venenatis ligula. Vivamus diam
ipsum, porta at sodales a, tristique malesuada magna. Nunc scelerisque,
nisi non malesuada hendrerit, dolor elit consequat ligula, commodo congue
mauris tortor vel justo. Nam id orci neque. Maecenas vel lectus mauris,
dapibus cursus odio. Pellentesque habitant morbi tristique senectus et
netus et malesuada fames ac turpis egestas. Aliquam viverra libero sit
amet nibh tempor eu suscipit enim convallis. Fusce vel pretium nibh.
Donec eu laoreet enim. Duis placerat mi convallis leo egestas aliquet.
Mauris lacinia, neque at aliquam mollis, magna augue lacinia ligula,
id placerat velit ante ut est. Curabitur consectetur consectetur urna,
a bibendum ligula ultrices vel. Phasellus id ligula vel mi tristique
vestibulum in vitae sapien. Vestibulum ornare fermentum nulla, eget
suscipit ante posuere id.'''

samm eintext[:150].split(' ')

for 
c in samm[0:20]:
    print(
cend=' '

Att jag har valt att begränsa eintext till de 150 första tecknena var ett försök till prestandahöjning, då det inte finns någon anledning att splitta en mycket lång text. Men min fråga är om det finns något effektivare sätt att lösa detta på?
Citera
2010-05-14, 00:15
  #2
Medlem
metapods avatar
Citat:
Ursprungligen postat av count4right
Ponera att du bygger en sökfunktion som söker igenom artiklar. Sökresultatet skall visas med de t.ex. de tjugo första orden i artikeln. Med mina för närvarande ganska begränsade kunskaper i python hade jag löst det så här:


Att jag har valt att begränsa eintext till de 150 första tecknena var ett försök till prestandahöjning, då det inte finns någon anledning att splitta en mycket lång text. Men min fråga är om det finns något effektivare sätt att lösa detta på?

Funktionen str.split tar som andra argument ett numeriskt värde som säger hur många fält som maximalt ska "splittas" fram.

Detta kan användas för att mer effektivt avsluta uppdelningen om du ändå inte ska använda de fält som hamnar på offset större än N (där N är antal fält du i slutändan vill ha ut).

Exempel

Kod:
:/tmp% python
Python 2.6.5 (r265:79063, Apr  1 2010, 05:28:39) 
[GCC 4.4.3 20100316 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> N =4
>>> source_data = "Sed et purus neque, molestie venenatis ligula."
>>> print ' '.join (
...   source_data.split (' ', N) [:N]
... )
Sed et purus neque,

Länk till dokumentation
__________________
Senast redigerad av metapod 2010-05-14 kl. 00:21.
Citera
2010-05-14, 00:28
  #3
Medlem
count4rights avatar
Citat:
Ursprungligen postat av metapod
Funktionen str.split tar som andra argument ett numeriskt värde som säger hur många fält som maximalt ska "splittas" fram.

Detta kan användas för att mer effektivt avsluta uppdelningen om du ändå inte ska använda de fält som hamnar på offset större än N (där N är antal fält du i slutändan vill ha ut).

Exempel

Kod:
:/tmp% python
Python 2.6.5 (r265:79063, Apr  1 2010, 05:28:39) 
[GCC 4.4.3 20100316 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> N =4
>>> source_data = "Sed et purus neque, molestie venenatis ligula."
>>> print ' '.join (
...   source_data.split (' ', N) [:N]
... )
Sed et purus neque,

Länk till dokumentation

Tackar! Nu när jag blev påmind så har jag läst om det andra argumentet som split tar, men det var inget som kom fram när jag klurade på detta .
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback