我有一个字符串’aúlt,我想根据字符位置获得操作的长度等等.问题是第一个ë被计算两次,或者我猜ë在位置0并且’在位置1.

在Python中是否有任何可能的方法让像ë被表示为1?

我正在使用UTF-8编码来输出它的实际代码和网页.

编辑:只是为什么我需要这样做的背景.我正在研究一个将英语翻译成Seneca(一种美洲原住民语言)的项目,并且显示了很多.某些单词的某些重写规则需要知道字母位置(本身和周围的字母)和其他特征,例如重音和其他变音符号.

解决方法:

UTF-8是一种unicode编码,它对特殊字符使用多个字节.如果你不想要编码字符串的长度,那么简单解码它并在unicode对象上使用len()(而不是str对象!).

这里有些例子:

>>> # creates a str literal (with utf-8 encoding, if this was

>>> # specified on the beginning of the file):

>>> len('ë́aúlt')

9

>>> # creates a unicode literal (you should generally use this

>>> # version if you are dealing with special characters):

>>> len(u'ë́aúlt')

6

>>> # the same str literal (written in an encoded notation):

>>> len('\xc3\xab\xcc\x81a\xc3\xbalt')

9

>>> # you can convert any str to an unicode object by decoding() it:

>>> len('\xc3\xab\xcc\x81a\xc3\xbalt'.decode('utf-8'))

6

当然,您也可以像访问str对象一样访问unicode对象中的单个字符(它们都是从basestring继承的,因此具有相同的方法):

>>> test = u'ë́aúlt'

>>> print test[0]

ë

如果您开发本地化应用程序,通常最好在内部使用unicode对象,通过解码您获得的所有输入.完成工作后,您可以将结果再次编码为“UTF-8”.如果你坚持这个原则,你将永远不会看到你的服务器崩溃,因为你可能会得到任何内部的UnicodeDecodeErrors;)

PS:请注意,str 3和unicode数据类型在Python 3中发生了显着变化.在Python 3中,只有unicode字符串和普通字节字符串不能再混合使用.这应该有助于避免使用unicode处理时常见的陷阱……

问候,

克里斯托夫

标签:python,character-encoding

来源: https://codeday.me/bug/20190926/1818400.html

python 返回字符串长度_Python在使用特殊字符时返回错误的字符串长度相关推荐

  1. python贪婪匹配顺序_Python正则表达式:贪婪模式返回多个空匹配

    这种模式仅意味着将字符串中的所有内容抓取到数据中第一个潜在句子边界为止: [^\.?!\r\n]* 输出: >>> pattern = re.compile(r"([^\. ...

  2. python 字符串替换_Python基础教程,第四讲,字符串详解

    本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...

  3. python write函数参数_Python函数-函数参数、返回值

    函数 1.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫         做subroutine(子过 ...

  4. python打印字符金字塔_Python教程第7篇:print打印字符串

    经过我们前面的python环境安装,以及对编辑器的认识,今天我们总算是正式开启了我们的python代码之路了. 相信咱们很多小伙伴,都在咱们的部落窝教育课堂学过Excel函数.小编把Excel里面的函 ...

  5. c++字符串拼接_Python零基础入门(三):字符串进阶

    点击蓝字 关注浅韵 一起划水 封面图: 这幅漫画告诉我们:程序不仅仅是写出来就完事的,还要看看能不能实现自己的目的,以及实现目的的方式是不是自己所希望的. 零.目标 1.字符串的增删改查2.字符串和内 ...

  6. 判断字符串格式_Python基础教程,第四讲,字符串详解

    本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...

  7. python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别

    我们在用python操作数据库的时候,经常会碰见两个函数:fetchone()和fetchall() 刚开始学习的时候可能会搞不清楚他们两个的区别 其实非常简单 首先fetchone()函数它的返回值 ...

  8. python设置全局变量失败_Python全局变量与global关键字常见错误解决方案

    在Python的变量使用中,经常会遇到这样的错误: local variable 'a' referenced before assignment 它的意思是:局部变量"a"在赋值 ...

  9. python内置函数可以返回列表元组_Python内置函数()可以返回列表、元组、字典、集合、字符串以及range对象中元素个数....

    Python内置函数()可以返回列表.元组.字典.集合.字符串以及range对象中元素个数. 青岛远洋运输有限公司冷聚吉船长被评为全国十佳海员.()A:错B:对 有源逆变是将直流电逆变成其它频率的交流 ...

最新文章

  1. 40万总奖金!院士指导,顶级云服务免费用!2021全球高性能云计算创新大赛来了...
  2. Binary Tree Level Order Traversal II leetcode java
  3. c语言指向常量的指针和常量指针
  4. mojo 关闭utf8
  5. mysql 互斥_MySql中互斥量mutex的实现
  6. OpenCV在图像中寻找轮廓的实例(附完整代码)
  7. 201671010135 2016--2017java程序设计对java的初步认识和对第一,二章的总结(0)
  8. 第三场阴影场与属性访问器接口
  9. 200 行代码实现一个滑动验证码
  10. 如何理解c和c ++的复杂类型声明
  11. 关于类类型的隐式类型转换
  12. Halo2 Map Editor Error
  13. 《JavaScript高级程序设计 第三版》学习笔记 (十三)高级函数
  14. CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
  15. WebDriver与浏览器版本对应关系
  16. [常用类]Instant类的使用
  17. 制作古装人物彩色工笔画图片的PS教程
  18. node官网下载安装
  19. 【机房重构】一步一步往上爬——不仅仅是三层
  20. 分析Threadlocal内部实现原理,并解决Threadlocal的ThreadLocalMap的hash冲突与内存泄露

热门文章

  1. 【解决方案】Basemap安装出现的错误(Python)
  2. 插入排序InsertionSort(Python实现)
  3. CSV文件读取和处理
  4. android下音频采集功能,音频采集:Android基于AudioRecord的实现
  5. android开发模式,Android开发中无处不在的设计模式
  6. 关于简单动态规划(Dynamic Programming)的总结
  7. WOJ 43 电话邀请
  8. 2017年第10批 手机号正则表达式
  9. JAVA-封装-静态属性
  10. C++:从子类访问父类的私有函数