在Python中移除Unicode字符串中的换行符的问题
我有一段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 个回答
2
这个字符串里没有换行符或者类似换行的东西。它总共有33个字符,所有字符都是可以打印出来的,不是用来格式化的。
你可能会对print
这个语句在最后加上换行符感到困惑,而sys.stdout.write
的行为又不一样,对吧?
5
根据我的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