我试图在我的Django应用程序中使用OpenstreetMaps API填充某个州的城市。该数据库已经填充了一些城市。
我面临重复数据问题,因为城市中的名称有时会带有特殊字符。
例如,在国家Turkey中,州Bursa具有城市Gursu。
我的数据库有一个名为Gürsu的城市对象。
Openstreet Map API的城市名称为Gürsü。
我正在尝试找到一种解决方案,以使现有城市与特殊字符名称匹配,并在存在的情况下对其进行更新。这样我就可以避免重复。
请您参考如下方法:
涉及unicode的解决方案是根据UAX#10匹配文本。您可以在数据库中或在Python中(可能使用PyICU)做到这一点。以下是一些简短的代码演示:
#!/usr/bin/env perl
use 5.010;
use utf8;
use open qw(:std :encoding(UTF-8));
use Unicode::Collate qw();
my $c = Unicode::Collate->new(normalization => undef, level => 1);
my @g = qw(Gursu Gürsu Gursü Gürsü);
for my $o (@g) {
for my $i (@g) {
say "$i matches $o" if -1 != $c->index($o, $i, 0);
}
}
__END__
Gursu matches Gursu
Gürsu matches Gursu
Gursü matches Gursu
Gürsü matches Gursu
Gursu matches Gürsu
Gürsu matches Gürsu
Gursü matches Gürsu
Gürsü matches Gürsu
Gursu matches Gursü
Gürsu matches Gursü
Gursü matches Gursü
Gürsü matches Gursü
Gursu matches Gürsü
Gürsu matches Gürsü
Gursü matches Gürsü
Gürsü matches Gürsü
