我正在尝试自动执行一系列查询,但是,我需要将带有重音符号的字符替换为相应的 html 实体。\n它需要在 Python3 中
\n例子:
\nv\xc3\xa8lit \n[needs to become] \nvèlit\nRun Code Online (Sandbox Code Playgroud)\n问题是,每当我尝试执行 a 时word.replace,它都找不到。
这:
\nif u'\xc3\xa8' in sentence:\n print(u'Found \xc3\xa8')\nRun Code Online (Sandbox Code Playgroud)\n工作并找到“\xc3\xa8”,但执行以下操作:
\nword.replace('\xc3\xa8','è')\nRun Code Online (Sandbox Code Playgroud)\n什么都不做。
\n我想将unicode字符串转换为iso-8859-15.这些字符串包括u"\u2019"(RIGHT SINGLE QUOTATION MARK参见http://www.fileformat.info/info/unicode/char/2019/index.htm)字符,该字符不是iso-8859-15字符集的一部分.
在Python中,如何规范化unicode字符以匹配iso-8859-15编码?
我看过unicodedata模块没有成功.我设法完成这项工作
s.replace(u"\u2019", "'").encode('iso-8859-15')
Run Code Online (Sandbox Code Playgroud)
但我想找到一种更通用,更清洁的方式.
谢谢你的帮助
我正在使用Python 2.7.6,我正在尝试将基本的unicode字符串转换为iso8859-15.
尝试转换带有非ASCII字符的字符串时出错.这可能没问题,当这些字符不存在时是iso8859-15编码,但在这种情况下它们会:
例:
>>> import codecs
>>> a = "test"
>>> a
'test'
>>> a.encode ('iso8859-15')
'test'
>>> a = "ü"
>>> a
'\xfc'
>>> a.encode ('iso8859-15')
Run Code Online (Sandbox Code Playgroud)
错误代码:
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
a.encode ('iso8859-15')
File "C:\Python27\lib\encodings\iso8859_15.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_table)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfc in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"ü"是一个有效的iso8859-15 char,其中十六进制值为fc或11111100为二进制.查看"C:\ Python27\lib\encodings\iso8859_15.py",第300行中的值为FC:
47: decoding_table = (
48: u'\x00' # 0x00 -> NULL
..... …Run Code Online (Sandbox Code Playgroud) 这可能与我之前的问题有关(关于如何将“för”转换为“för”)
所以我在我的代码中创建了一个文件。现在我通过以下代码创建它:
FileWriter fwOne = new FileWriter(wordIndexPath);
BufferedWriter wordIndex = new BufferedWriter(fwOne);
Run Code Online (Sandbox Code Playgroud)
跟着几个
wordIndex.write(wordBuilder.toString()); //that's a StringBuilder
Run Code Online (Sandbox Code Playgroud)
结束(在while循环之后)
wordIndex.close();
Run Code Online (Sandbox Code Playgroud)
现在问题是这个文件很大,我想(需要)在不遍历整个文件的情况下跳转到它。让我这样做的seek(long pos)方法RandomAccessFile。
这是我的问题:我创建的文件中的字符似乎是用 UTF-8 编码的,我寻找时唯一的信息是我想跳转到的字符位置。seek(long pos)另一方面,以字节为单位跳转,因此我不会在正确的位置结束,因为 UTF-8 字符可能超过一个字节。
这是我的问题:当我写文件时,我可以用 ISO-8859-15 来写它吗(其中一个字符是一个字节)?这样,这seek(long pos)将使我处于正确的位置。或者我应该尝试使用替代方法RandomAccessFile(是否有替代方法可以跳转到字符位置?)
iso-8859-15 ×4
encoding ×3
python ×3
unicode ×2
utf-8 ×2
encode ×1
java ×1
python-3.x ×1
replace ×1