【问题标题】:Split a unicode string without regular expression拆分没有正则表达式的 unicode 字符串
【发布时间】:2014-01-26 14:07:33
【问题描述】:

我正在尝试将 Unicode 字符串拆分为所有可能的拆分

此代码将给出所有字符排列 英文字符串,但不是 unicode

def allperm(inputstr):
        for i in range(len(inputstr)):
            yield(inputstr[i])        
            for s in allperm(inputstr[:i] + inputstr[i+1:]):
                yield(inputstr[i] + s)

例如,

സമരക്കാര്‍ക്കാരുടെ 
സമ #രക്കാര്‍ക്കാരുടെ 
സമര#ക്കാര്‍ക്കാരുടെ 
സമരക്കാ#ര്‍ക്കാരുടെ 

例如英文

running can be sliced to

ru # nning
run #ning
runn#ing

这个 Unicode 字符串需要对其所有字符组合进行切片

我知道string.split()import re

除了这两种方法之外,还有什么方法可以拆分吗?

【问题讨论】:

  • 您能否解释一下“所有可能的拆分”是什么意思,以及您为什么要寻找这两种方法的可能替代方案?
  • 我需要使用方法而不是正则表达式和拆分方法将单词拆分为所有组合
  • @karu:请提供示例输出。你现在的问题很难理解。
  • @karu 什么是“组合”——你能提供例子吗?您提到了拆分和切片-它们是不同的操作,而“组合”(通常)又是不同的东西……
  • 你是问如何获取unicode字符串的前缀,或者如何在某个索引处将一个unicode字符串一分为二?

标签: string python-2.7 unicode


【解决方案1】:

您可以使用字节切片,例如

 a = "സമരക്കാര്‍ക്കാരുടെ".encode('utf-8')
 a
=> '\xc3\xa0\xc2\xb4\xc2\xb8\xc3\xa0\xc2\xb4\xc2\xae\xc3\xa0\xc2\xb4\xc2\xb0\xc3\xa0\xc2\xb4\xc2\x95\xc3\xa0\xc2\xb5\xc2\x8d\xc3\xa0\xc2\xb4\xc2\x95\xc3\xa0\xc2\xb4\xc2\xbe\xc3\xa0\xc2\xb4\xc2\xb0\xc3\xa0\xc2\xb5\xc2\x8d\xc3\xa2\xc2\x80\xc2\x8d\xc3\xa0\xc2\xb4\xc2\x95\xc3\xa0\xc2\xb5\xc2\x8d\xc3\xa0\xc2\xb4\xc2\x95\xc3\xa0\xc2\xb4\xc2\xbe\xc3\xa0\xc2\xb4\xc2\xb0\xc3\xa0\xc2\xb5\xc2\x81\xc3\xa0\xc2\xb4\xc2\x9f\xc3\xa0\xc2\xb5\xc2\x86' 
 a[:2]
=> '\cx3\xa0'
 a[2:4]
=> '\xc2\xb4'

也推荐阅读:http://docs.python.org/release/3.2/howto/unicode.html

【讨论】:

  • @DavidKernin 好的,让我试试
猜你喜欢
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 2013-11-19
  • 2011-06-18
相关资源
最近更新 更多