Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
红移中的Python UDF函数始终返回空值_Python_Amazon Web Services_Amazon Redshift_Unaccent - Fatal编程技术网

红移中的Python UDF函数始终返回空值

红移中的Python UDF函数始终返回空值,python,amazon-web-services,amazon-redshift,unaccent,Python,Amazon Web Services,Amazon Redshift,Unaccent,我想在红移中有一个函数,可以去除单词中的重音。我在SO()中发现了一个问题,它的代码是用Python编写的。我尝试了几种解决方案,其中之一是: import unicodedata def remove_accents(accented_string): nfkd_form = unicodedata.normalize('NFKD', input_str) return u"".join([c for c in nfkd_form if not unicodedata.comb

我想在红移中有一个函数,可以去除单词中的重音。我在SO()中发现了一个问题,它的代码是用Python编写的。我尝试了几种解决方案,其中之一是:

import unicodedata
def remove_accents(accented_string):
    nfkd_form = unicodedata.normalize('NFKD', input_str)
    return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
然后我用红移创建函数,如下所示:

create function remove_accents(accented_string varchar)
returns varchar
immutable
as $$
import unicodedata
def remove_accents(accented_string):
    nfkd_form = unicodedata.normalize('NFKD', input_str)
    return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
$$ language plpythonu;
我将其应用于具有以下内容的列:

SELECT remove_accents(city) FROM info_geo

只获取空值。列city是varchar类型。为什么我会得到空值以及如何解决它?

您不需要在UDF中创建Python函数。添加函数调用或将其作为标量表达式写入:

create function remove_accents(accented_string varchar)
returns varchar
immutable
as $$
  import unicodedata
  nfkd_form = unicodedata.normalize('NFKD', accented_string)
  return u"".join([c for c in nfkd_form if not unicodedata.combining(c)])
$$ language plpythonu;