2015-08-05 6 views
0

Я использую скрипт, который в основном захватывает HTML-элементы из файлов HTML и отправляет их в базу данных MySQL. Я используюPython добавляет нежелательные вкладки в строку

title = line.replace("<!--h1-->",'').replace("<h1>",'').replace("</h1>",'')

для захвата H1. Теперь, если я бегу

print title

все в порядке. Однако, если я бегу

print 'post_title = %(title)s'%locals()

затем Python последовательно, кажется, добавить 2 вкладки к началу title.

Кто-нибудь знает, что вызывает это и как я могу предотвратить это?

+2

Python ничего не добавляет; вкладки уже есть. Что означает 'print repr (title)' tell you is in value? –

+0

@Martijn Pieters: 'print repr (title)' возвращает '\ t \ ttitle \ n'. Хорошо, я понимаю: проблема в том, что 'line' начинается с двух вкладок, и они не удаляются при захвате' title'. – RubenGeert

ответ

0

Способ удаления пробелов заключается в использовании strip()string method.

title = line.replace("<!--h1-->",'').replace("<h1>",'').replace("</h1>",'') 
print 'post_title = %s' % title.strip() 

Или, если вы знаете, всегда есть два нежелательных вкладки в начале строки, просто сократить название. Следующий код заменяет заголовок всеми, кроме первых двух символов строки.

title = title[2:] 

Редактировать

Другой способ сделать это с помощью regular expressions. Подобно методу replace для строк, метод замещения регулярных выражений может использоваться для замены ваших двойных вкладок (\t\t) пустой строкой ('').

import re 
title = line.replace("<!--h1-->",'').replace("<h1>",'').replace("</h1>",'') 
# Replace two consecutive tabs. 
title = re.sub('\t\t', '', title) 

Что делает re модуль настолько мощным, что вы можете даже ограничить свой поиск до начала (или конца) строк в вопросе с помощью ^ (или $) характера.

title = re.sub('(^\t\t)', '', title) 
0

Вызов strip() на title строку:

title = line.replace("<!--h1-->",'').replace("<h1>",'').replace("</h1>",'').strip() 
print 'post_title = %(title)s' % locals() 

Это не обязательно использовать locals() таким образом; у вас уже есть необходимый переменной, так:

print 'post_title = %s' % title 

или

print 'post_title = {}'.format(title) 

бы предпочтительнее.

Смежные вопросы