2010-11-27 2 views

ответ

12

rstrip Используйте функцию:

s = s.rstrip() 

Это удалит все пробелы из конца вашей строки.

+1

-1 Две причины: (a) использование «rstrip()» - это kludgeon (перекресток между kludge и bludgeon), он «работает» в этом случае, но крайне плохая привычка. Безопасная рабочая привычка с текстовыми файлами (когда не используется модуль csv) заключается в том, чтобы отменить ** ТОЛЬКО ** новую строку с помощью `rstrip ('\ n')`, затем раскалывания или чего-то еще. Таким образом, вы не сталкиваетесь с проблемами, когда поля разделяются табуляцией или когда вы просматриваете поля переменной ширины, у которых есть конечные пробелы в конце, или записи имеют фиксированную длину и т. Д. (B) Не комментируя странный `\ r` в конце данных OP. – 2010-11-27 20:43:58

1

Если вы сказали, что файл показывает "FN:John Smith;;;\n\r", значит у вас возникли проблемы - \r совершенно неожиданно.

Какая операционная система вы используете, какую версию Python и точно, как вы определили, что файл показывает это?

Вот обычная идиома для чтения файла, который имеет линии законченные терминатор обычно используемой ОС вы используете, и поля разделены ; символов:

f = open('myfile.txt', 'r') 
for line in f: 
    # standard OS terminator is converted to `\n` 
    line = line.rstrip('\n') # remove trailing newline 
    fields = line.split(';') 
    # fields[0] should refer to "FN:John Smith" in your example 
    for field_index, field in enumerate(fields): 
     if not field: 
      continue # empty field 
     tag, value = field.split(':') 
     print "Field %d: tag %r, value %r" % (field_index, tag, value) 

Вы можете не прочитали это Wikipedia article ... Хочу отметить, что «FN» означает «отформатирован Name», а не «Имя», и есть более «N» тег, который будет легче разобрать:

N:Gump;Forrest 
FN:Forrest Gump 

Я также отметить, что линия, как FN:John Smith;;; не отображается в artic ле.

Возможно, вы сможете использовать существующий код; см. this StackOverflow question.

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