Как удалить новую строку и строку из тегов заголовков страницы? (Google App Engine – Python)

У меня есть этот код для извлечения заголовка:

soup = BeautifulSoup.BeautifulSoup(urllib.urlopen(url)) title = str(soup.html.head.title.string).lstrip("\r\n").rstrip("\r\n") 

Некоторые сайты добавляют return или newline до и после тегов заголовков (почему?), И чтобы удалить их, я добавил

 .lstrip("\r\n").rstrip("\r\n") 

Это работает, например, с http://www.readwriteweb.com/, но не с http://poundwire.com/ . Можете ли вы сказать, почему он работает, а другой нет?

Обновить

Продолжая комментарий Стива Джессопа; Я использую replace и, похоже, работает:

 title = str(soup.html.head.title.string).replace("\t", "").replace("\r", "").replace("\n", "") 

Дайте мне знать, если есть лучший способ. Благодарю.

Обновление 2

Я нашел этот ответ, и мне кажется лучше:

 title = " ".join(str(soup.html.head.title.string).split()) 

Попробуйте использовать str(title).strip() который будет обрезать все пробелы с начала и конца строки.

В poundwire внутри <title> есть символ табуляции. Есть также некоторые пробелы (отступы, которые вы, вероятно, увидите, если вы «просмотрите источник»), которые, вероятно, вы также захотите удалить.

Как и samplebias, используйте strip() для удаления пробелов на обоих концах строки. И получите текстовый редактор с режимом «видимого пробела», включите этот режим и никогда не отключите его, когда-либо 🙂

Кстати, если вы работаете в Google App Engine, значит, вы находитесь на Python 2.5, что, в свою очередь, означает, что str является строкой типа, отличной от Unicode. BeautifulSoup идет на несколько длин, чтобы принудить его вводить в Unicode, поэтому кажется, что стыдно бросать исключение, когда вы нажимаете на страницу, название которой содержит символы, отличные от ASCII.

[Изменить: третий случай

 $ python Python 2.6.5 (r265:79063, Jun 12 2010, 17:07:01) [GCC 4.3.4 20090804 (release) 1] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> from BeautifulSoup import BeautifulSoup >>> import urllib >>> soup = BeautifulSoup(urllib.urlopen('http://code.google.com/p/google-refine/')) >>> soup.html.head.title.string u'\\n google-refine -\\n \\n \\n Google Refine, a power tool for working with messy data (formerly Freebase Gridworks) - Google Project Hosting\\n ' >>> 

Таким образом, пространство прямо в конце означает, что ваш rstrip не удаляет \n ближе к концу.