Проблема с удалением символа новой строки из строки Unicode в Python - PullRequest
1 голос
/ 08 июля 2011

У меня есть фрагмент текста Unicode.Я хотел удалить все символы новой строки из текста перед выводом на печать.Мой код выглядит примерно так:

input_string = u'\u3010JK\u3011\u9032\u5b66\u306b\u56f0\u3063\u305f\uff2a\uff2b\u304c\u5148\u751f\u306b\u52a9\u3051\u3066\u3082\u3089\u3046\u305f\u3081\u306b\uff33\uff25\uff38\uff01.mov'
output_string = ' '.join(input_string.splitlines())
print output_string

Я надеялся, что библиотечный метод позаботится обо всех грязных символах не-коде новой строки.Но, похоже, этот метод не удаляет символ новой строки из заданного ввода.Пожалуйста, предложите решение для удаления символа новой строки из заданного ввода.

Ответы [ 2 ]

6 голосов
/ 08 июля 2011

Согласно моему Python, ваша строка не содержит символов категории Cc (управляющий символ):

>>> unicodedata.category(u'\n') in map(unicodedata.category, input_string)
False

так что нет новой строки в этой строке. unicodedata.name подтверждает это:

>>> for c in s: print unicodedata.name(c)
... 
LEFT BLACK LENTICULAR BRACKET
LATIN CAPITAL LETTER J
LATIN CAPITAL LETTER K
RIGHT BLACK LENTICULAR BRACKET
CJK UNIFIED IDEOGRAPH-9032
CJK UNIFIED IDEOGRAPH-5B66
HIRAGANA LETTER NI
CJK UNIFIED IDEOGRAPH-56F0
HIRAGANA LETTER SMALL TU
HIRAGANA LETTER TA
FULLWIDTH LATIN CAPITAL LETTER J
FULLWIDTH LATIN CAPITAL LETTER K
HIRAGANA LETTER GA
CJK UNIFIED IDEOGRAPH-5148
CJK UNIFIED IDEOGRAPH-751F
HIRAGANA LETTER NI
CJK UNIFIED IDEOGRAPH-52A9
HIRAGANA LETTER KE
HIRAGANA LETTER TE
HIRAGANA LETTER MO
HIRAGANA LETTER RA
HIRAGANA LETTER U
HIRAGANA LETTER TA
HIRAGANA LETTER ME
HIRAGANA LETTER NI
FULLWIDTH LATIN CAPITAL LETTER S
FULLWIDTH LATIN CAPITAL LETTER E
FULLWIDTH LATIN CAPITAL LETTER X
FULLWIDTH EXCLAMATION MARK
FULL STOP
LATIN SMALL LETTER M
LATIN SMALL LETTER O
LATIN SMALL LETTER V
1 голос
/ 08 июля 2011

В этой строке нет символов новой строки или чего-либо подобного символам новой строки. В нем 33 символа, и все они являются печатными символами, а не форматированием.

Может быть, вас смущает тот факт, что оператор print добавляет новую строку в конец по сравнению с поведением sys.stdout.write?

...