RTF标准使用UTF-16,但形状适合RTF命令序列格式。记录在http://en.wikipedia.org/wiki/Rich_Text_Format#Character_encoding。遗憾的是,pyRTF不会为你做任何编码;处理这个已经在项目的TODO上,但显然他们在放弃图书馆之前从未达到过这个目的。

这是基于我最近在项目中使用的代码。我现在发布了这个rtfunicode on PyPI,支持Python 2和3; python 2版本:

import codecs

import re

_charescape = re.compile(u'([\x00-\x1f\\\\{}\x80-\uffff])')

def _replace(match):

codepoint = ord(match.group(1))

# Convert codepoint into a signed integer, insert into escape sequence

return '\\u%s?' % (codepoint if codepoint < 32768 else codepoint - 65536)

def rtfunicode_encode(text, errors):

# Encode to RTF \uDDDDD? signed 16 integers and replacement char

return _charescape.sub(_replace, escaped).encode('ascii')

class Codec(codecs.Codec):

def encode(self, input, errors='strict'):

return rtfunicode_encode(input, errors), len(input)

class IncrementalEncoder(codecs.IncrementalEncoder):

def encode(self, input, final=False):

return rtfunicode_encode(input, self.errors)

class StreamWriter(Codec, codecs.StreamWriter):

pass

def rtfunicode(name):

if name == 'rtfunicode':

return codecs.CodecInfo(

name='rtfunicode',

encode=Codec().encode,

decode=Codec().decode,

incrementalencoder=IncrementalEncoder,

streamwriter=StreamWriter,

)

codecs.register(rtfunicode)您可以编码为'rtfunicode'而不是编码为“iso-8859-15”:

>>> u'\u20AC'.encode('rtfunicode') # EURO currency symbol

'\\u8364?'以这种方式将您插入RTF文档的任何文本编码。

注意,它只支持UCS-2 unicode(\uxxxx,2个字节),而不支持UCS-4(\Uxxxxxxxx,4个字节); rtfunicode 1.1通过简单地将UTF-16代理对编码为两个\uDDDDD?有符号整数来支持这些。

python读取rtf文件中指定的内容_使用Python读取RTF文件时遇到欧元符号问题相关推荐

  1. 利用IO流一次性读取文件中的所有内容,利用IO流下载文件

    利用IO流一次性读取文件中的所有内容 读取文件效率最快的方法就是一次全读进来,使用readline()之类的方法,可能需要反复访问文件,而且每次readline()都会调用编码转换,降低了速度,所以, ...

  2. python文件中单词的删除_使用python删除文件中的多余单词

    嗨,我正在学习Python,出于好奇,我编写了一个程序来删除文件中多余的单词. 我正在比较文件text1.txt中的测试.和'text2.txt',基于text1中的测试,我删除了test2中多余的单 ...

  3. PageOffice既保存Word文件中指定区域的数据又保存整篇文件

    一.首先在word文件中给需要在后台获取数据的区域设置以PO_开头的书签. 二.通过pageoffice在线打开文件并编辑保存.有两种打开文件的模式 1.普通编辑模式(docNormalEdit) 普 ...

  4. 如何修改xd.properties文件中对象存储文件信息_对块存储、文件存储、对象存储的认识总结...

    因工作原因接触了对象存储,从而了解到相关的块存储和文件存储.搜罗了网上各种信息,结合自己的理解,整理如下.欢迎阅读,批评指正. 开头引用下几篇关于"块存储.文件存储.对象存储"的文 ...

  5. python对csv文件中的数据进行分类_使用Python读取csv文件并进行分类存储

    同学叫我帮忙用Python做csv表格分类,整理一下遇到的问题及解决方案 原生数据文件TEST.csv: 如图我需要根据G列内容,分别对A,B,C进行分类到A.csv,B.csv,C.csv 上代码, ...

  6. 使用PHP来删除文件中 指定文字内容

    话不多说直接上代码. /*** @author SucreCao* @return false|string*/public function deleteCharacters(){$fileName ...

  7. python读取二进制数据中的while循环_在Python中读取二进制文件并循环遍历每个字节...

    f = open("myfile", "rb") try: byte = f.read(1) while byte != "": # Do ...

  8. python对csv文件中的数据进行分类_利用Python对csv文件中的数据进行排序

    代码如下: #导入包 import pandas as pd from pandas import DataFrame,Series #设置路径 path='C:\\Users\\jyjh\\Desk ...

  9. python从文件中提取特定文本_使用Python从HTML文件中提取文本

    我发现最好的一段代码用于提取文本,而不需要javascript或不需要的东西:import urllibfrom bs4 import BeautifulSoupurl = "http:// ...

最新文章

  1. Jupyter Notebook快捷键
  2. java8 遍历目录_使用java8API遍历过滤文件目录及子目录及隐藏文件
  3. 小阳买水果(前缀和,单调栈,思维)
  4. 我的Go语言学习之旅七:创建一个GUI窗体
  5. 什么是商业智能(BI),以及其与数据分析的区别?
  6. Code First :使用Entity. Framework编程(6) ----转发 收藏
  7. 想找C++开发职位必读的书,以及其他条件
  8. 第五章---引入VIP后的数据库架构
  9. 计算机图形人机交互实验报告,用户界面设计人机交互实验报告.doc
  10. 2014年的六级考试即将来临,你们准备好了吗?
  11. JS数组操作之增删改查
  12. SignalR入门之Hub
  13. 分享几个java小程序代码
  14. JPG/PNG转SVG矢量格式
  15. ps软件抠图、去除图片背景
  16. CDPSE-数据隐私解决方案工程师
  17. ios 出现log不打印 was compiled with optimization - stepping may behave oddly; variables may not be availa
  18. ZOJ Monthly,Feburary 2012 部分题解
  19. Linux学习笔记:联想拯救者Y7000进BIOS
  20. windowns server 2012 R2 启动U盘制作

热门文章

  1. MATLAB软件基础学习篇——002
  2. C++、Python、Java的MySQL数据库操作
  3. java Integer范围详解
  4. 3JSP与Javabean
  5. 关于Linux服务器上部署tomcat项目,输入数据乱码解决
  6. infoq, 一个很好的技术人员的网站
  7. redis漏洞防攻击
  8. 车牌识别1.1:License Plate Detection and Recognition in Unconstrained Scenarios。
  9. spring的init-method,destory-method, @PostConstruct,@ PreDestroy, InitializingBean
  10. 漫画:从诗词大会飞花令到ElasticSearch原理解析