【问题标题】:Replacing substrings in a list of strings or decoding替换字符串列表中的子字符串或解码
【发布时间】:2018-06-02 21:01:18
【问题描述】:

我有一个我将在 PYTHON 中工作的字符串列表,其中一些字符串包含特殊字符:üäö 等等。

我有两个解决方案:

  1. 通过替换字符串列表中的子字符串来处理获取的数据。
  2. 解码python列表中获取的内容。

    lista_names_d = [ 'L\xc3\xbcneburg Bockelsberg 2', 'L\xc3\xbcneburg Bockelsberg 1', 'L\xc3\xbcneburg Bockelsberg 3','L\xc3\xbcneburg Bockelsberg 5' ]

我试过this

lista_names_d = [name.replace('\xc3\xbc', 'ü') for name in lista_names_d]

这没有任何作用

我试过this

your_unicode_string = "L\xc3\xbcneburg Kaltenmoor BHKW 1"
correct_unicode_string = your_unicode_string.encode('latin1').decode('utf8')

错误: UnicodeDecodeError:“ascii”编解码器无法解码位置 1 的字节 0xc3:序数不在范围内(128)

非常感谢任何帮助

【问题讨论】:

  • 您确定使用latin1?试试sys.stdin.encoding
  • 你是什么数据库?
  • python 2 还是 3 ?
  • @StevenBENET 我从 sql 收集数据,但在 python 上处理,我使用 zeppelin,所以我猜是 python 3

标签: python sql string special-characters


【解决方案1】:

如何使用函数unicode?此代码打印正确的重音符号:

lista_names_d = [ 'L\xc3\xbcneburg Bockelsberg 2', 'L\xc3\xbcneburg Bockelsberg 1', 'L\xc3\xbcneburg Bockelsberg 3','L\xc3\xbcneburg Bockelsberg 5' ]

for item in lista_names_d:
    print(unicode(item, 'utf-8'))

【讨论】:

  • 给我以下错误:回溯(最近一次调用最后一次):文件“”,第 2 行,在 UnicodeEncodeError:'ascii' 编解码器无法编码字符 u'\ xfc' 在位置 1:序数不在范围内(128)
  • 您可以尝试将此行添加为代码的第一行:在源标题中,您可以声明:# -*- coding: utf-8 -*-
  • 我添加了它。不幸的是,仍然有错误! UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 1: ordinal not in range(128)
  • 您是否尝试过将上面的示例作为独立的示例?我在问,因为该代码中没有明确的 \xfc char。 (但是 utf-8 中的 \xc3\xbc 是 latin-1 中的 \xfc)
  • 你的python版本到底是什么?
【解决方案2】:

查看encoding 文档:

for city in lista_names_d:
    print city.decode('utf8')
# Lüneburg Bockelsberg 2
# Lüneburg Bockelsberg 1
# Lüneburg Bockelsberg 3
# Lüneburg Bockelsberg 5

来自官方文档:

>>> u = unichr(40960) + u'abcd' + unichr(1972)   # Assemble a string
>>> utf8_version = u.encode('utf-8')             # Encode as UTF-8
>>> type(utf8_version), utf8_version
(<type 'str'>, '\xea\x80\x80abcd\xde\xb4')
>>> u2 = utf8_version.decode('utf-8')            # Decode using UTF-8
>>> u == u2                                      # The two strings match
True

【讨论】:

  • 这对你有用吗?我收到一个错误:回溯(最近一次调用最后一次):文件“”,第 2 行,在 UnicodeEncodeError:'ascii' 编解码器无法在位置 1 编码字符 u'\xfc':序数不在范围(128)
猜你喜欢
  • 2017-06-22
  • 2019-06-26
  • 2019-11-08
  • 2021-05-22
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 2012-04-03
  • 2013-07-23
相关资源
最近更新 更多