我真的是python编码的新手,所以请详细回答,不要太苛刻。 我正在尝试用'ss'替换shapefile的属性表中的德语变音符'ß',并通过使用字段计算器来执行此操作,您可以在其中添加python代码块。
这是我到目前为止尝试过的:
def ecode(file, name, test):
test.decode("utf-8")
test.replace("\xe1", "ss")
test.encode("utf-8")
return test
我还使用了“ U + 00DF”和“ \ xdf”来代替“ \ xe1”。
会出现此错误消息:
属性表的此字段中的街道名称为“Zuccalistraße21a”,因此很明显,ß是超出ASCII范围的问题(> 200)。 我该怎么做才能替换它? 我已经在互联网上搜索了5个小时。...
希望得到一些答案! 亲切的问候, 艾拉
答案 0 :(得分:1)
#!/usr/bin/python3
import sys
primary_numbers = [1, 2]
def is_prime(i):
response = True
for pn in enumerate(primary_numbers[2:]):
if i % pn[1] == 0:
response = False
return response
def main(position):
i = 2
while i < int(position):
res = is_prime(i)
if res:
primary_numbers.append(i)
i += 1
if __name__ == '__main__':
position = sys.argv[1]
main(position)
print ("The prime number #{pos} position is {prime}".format(pos=position,prime=primary_numbers[-1]))
以及decode
和encode
不能就地工作。尝试replace
,test = test.decode('utf-8')
和test = test.encode('utf-8')
。
这意味着test = test.replace("\xe1", "ss")
和decode
行对replace
无效。然后,第三行尝试test
对象, 但尚未解码,因此无法正常工作。
也就是说,那之后您仍然会有问题。这就是我要做的:
encode
或
test = test.decode("utf-8")
test = test.replace(u"\xdf", "ss")
test = test.encode("utf-8")
对您而言最易读的那个。
您也无法对其进行解码/编码,而只进行test = test.decode("utf-8")
test = test.replace(u"ß", "ss")
test = test.encode("utf-8")
或test = test.replace(u"\xdf".encode("utf-8"), "ss")
,但通常最好处理test = test.replace("ß", "ss")
对象,因此我认为解码和编码是一种好习惯。 / p>
答案 1 :(得分:1)
您可以将casefold
和capitalize
的组合用于python3
In [6]: s = 'Zuccalistraße 21a'
In [7]: s.casefold()
Out[7]: 'zuccalistrasse 21a'
In [8]: s.casefold().capitalize()
Out[8]: 'Zuccalistrasse 21a'
对于python2
,函数decode
,replace
和encode
不是in-place
函数,但是它们返回一个值,因此您需要分配将函数的值返回给变量以编写代码。
还要注意上面声明的# coding=utf-8
。这符合PEP-263
# coding=utf-8
s = 'Zuccalistraße 21a'
s = s.decode("utf-8").replace(u"\xdf", "ss").encode("utf-8")
print(s)
输出将为
Zuccalistrasse 21a
答案 2 :(得分:0)
很明显,这是解码的问题。 当我尝试
def ecode(file, name, test):
test=test.decode("utf-8")
test=test.replace(u"\xdf", "ss")
test=test.encode("utf-8")
return test
我收到错误消息:
第16行的文件“ C:\ Python27 \ ArcGIS10.2 \ Lib \ encodings \ utf_8.py”在解码中 返回codecs.utf_8_decode(input,errors,True)
UnicodeEncodeError:'ascii'编解码器无法在位置11编码字符u'\ xdf':序数不在范围内(128)
现在我得到了这个问题的答案: 我发现,当您输入
import sys
reload(sys)
sys.setdefaultencoding("utf8")
该功能正常运行!! 因此,感谢您为我提供的帮助,祝您愉快:)
干杯, 艾拉