2016-03-31 19 views
0

gelen bağlantıyı kaldırmak çıkış paterni www._____.com sözlerini atlar Aşağıdaki liste anlama, deneyinpiton, bu dizeden bağlantı kaldırılabilir nasıl dize

s='hello how are you today' 
+1

Genel bir çözüm mü yoksa sadece bu dize mi istiyorsunuz, çünkü URL'ler çok çeşitli olabilir – Natecat

+0

www.something.com biçiminde herhangi bir alt dizeyi işleyebilen bir çözüm –

cevap

6

olduğunu böylece

s=' hello how are you www.ford.com today ' 

:

' '.join(item for item in s.split() if not (item.startswith('www.') and item.endswith('.com')) and len(item) > 7) #the len(item) is to make sure that words like www.com, which aren't real URLs, aren't removed 

>>> s=' hello how are you www.ford.com today ' 
>>> ' '.join(item for item in s.split() if not (item.startswith('www.') and item.endswith('.com') and len(item) > 7)) 
'hello how are you today' 
>>> 
+0

"Birleştirme" köşeli parantezleri atlayabilir . –

+0

Bu çok zarif ve okunabilir bir çözümdür – Natecat

+0

@Natecat, sarcastic olup olmadığından emin değil :) –

0

, böyle dize bölünmüş yöntemi kullanabilirsiniz url etrafında yer yoktur durumda başa bulunmak için: kesinlikle strings yöntem kullanabilirsiniz iken

if ".com" in s: 
    s=''.join((s.split("www.")[0], " ", s.split(".com")[1])) 
+0

İfadeniz şu cümleler gibi başarısız oluyor: 'Önek www. sık sık bir url başlatır, .com biterken – Gerrat

2

, ben normal ifade tercih temel yaklaşım. Kelimeler arasındaki boşlukları işleyebilir.

+0

Bu, – Natecat

+0

@ Natecat'ın ifadesiyle benimkiyle aynı durumda başarısız oluyor. – Ben

+0

, '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' 'yazdı wantgını da yazdım, bu yüzden URL bağlantısındaki tek boşlukları nasıl kaldırabilirim – user3849475

2

Bu, normal ifadeler için iyi bir durum gibi görünüyor.

>>> import re 
>>> s = ' hello how are you www.ford.com today www.example.co.jp ' 
>>> re.sub(r'\s*(?:https?://)?www\.\S*\.[A-Za-z]{2,5}\s*', ' ', s).strip() 
'hello how are you today' 

üzerinde, daha sonra, potansiyel boşluk ile daha sonra muhtemelen https:// veya http://, daha sonra www. başlayan herhangi bir dize, 2-5 alfabetik karakterlerin ardından daha sonra . daha sonra herhangi bir boşluk olmayan karakterleri, potansiyel boşluk bulur. Bu dizeleri tek bir boşlukla değiştirir ve daha sonra gelen ve sondaki boşlukları sonuçtan kaldırır.

Bunun, örneğinizin belirttiği şekliyle bir URL'nin naif bir örneği olduğunu unutmayın. Bir URL'yi oluşturan şeyin daha eksiksiz bir tanımına sahip bir normal ifade için bkz. this answer.