有没有任何standalonenish解决方案用于将国际unicode文本规范化为Python中的安全ID和文件名?
例如,转My International Text: åäö来my-international-text-aao
plone.i18n做很好的工作,但不幸的是它取决于zope.security和zope.publisher和其他一些包使得它十分脆弱的依赖.
使用Python 3.3.我想做以下事情:
这是我到目前为止:
mystring_modified = mystring.replace('\u00E9', 'e').replace('\u00F4', 'o').lower()
alphnumspace = re.compile(r"[^a-zA-Z\d\s]")
mystring_modified = alphnumspace.sub('', mystring_modified)
Run Code Online (Sandbox Code Playgroud)
我怎样才能改善这个?效率是一个大问题,特别是因为我目前正在循环中执行操作:
# Pseudocode
for mystring in myfile:
mystring_modified = # operations described above
mylist.append(mystring_modified)
Run Code Online (Sandbox Code Playgroud)
有问题的文件大约每个200,000个字符.
我需要删除西班牙语中的重音和来自不同数据集的其他语言的重音.
我已经在这篇文章提供的代码中做了一个函数,删除了特殊的重音符号.问题是函数很慢,因为它使用了UDF.我只是想知道我是否可以提高函数的性能以在更短的时间内获得结果,因为这对小型数据帧有好处,但对大型数据帧则不行.
提前致谢.
在这里代码,您将能够按照它呈现的方式运行它:
# Importing sql types
from pyspark.sql.types import StringType, IntegerType, StructType, StructField
from pyspark.sql.functions import udf, col
import unicodedata
# Building a simple dataframe:
schema = StructType([StructField("city", StringType(), True),
StructField("country", StringType(), True),
StructField("population", IntegerType(), True)])
countries = ['Venezuela', 'US@A', 'Brazil', 'Spain']
cities = ['Maracaibó', 'New York', ' São Paulo ', '~Madrid']
population = [37800000,19795791,12341418,6489162]
# Dataframe:
df = sqlContext.createDataFrame(list(zip(cities, countries, population)), schema=schema)
df.show()
class Test():
def __init__(self, df):
self.df = df
def clearAccents(self, …Run Code Online (Sandbox Code Playgroud) python unicode-normalization apache-spark apache-spark-sql pyspark
如何在Python中用unicode字符串替换非ascii字符?
这是给定输入的输出:
música - >音乐
cartón - >纸箱
caño - > cano
Myaybe有一个字母,其中'á'是一个键,'a'是一个值?
我正在寻找简单的Python函数,它接受一个字符串并返回一个类似的字符串,但所有非ascii字符转换为它们最接近的ascii等价物.例如,应该删除变音符号等.我想象必须有一个非常规范的方法来做这个并且有很多相关的stackoverflow问题,但我找不到一个简单的答案所以它似乎值得一个单独的问题.
输入/输出示例:
"Étienne" -> "Etienne"
Run Code Online (Sandbox Code Playgroud) 如何将特殊字符更改为通常的字母?这是我的数据帧:
In [56]: cities
Out[56]:
Table Code Country Year City Value
240 Åland Islands 2014.0 MARIEHAMN 11437.0 1
240 Åland Islands 2010.0 MARIEHAMN 5829.5 1
240 Albania 2011.0 Durrës 113249.0
240 Albania 2011.0 TIRANA 418495.0
240 Albania 2011.0 Durrës 56511.0
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像这样:
In [56]: cities
Out[56]:
Table Code Country Year City Value
240 Aland Islands 2014.0 MARIEHAMN 11437.0 1
240 Aland Islands 2010.0 MARIEHAMN 5829.5 1
240 Albania 2011.0 Durres 113249.0
240 Albania 2011.0 TIRANA 418495.0
240 Albania 2011.0 Durres 56511.0
Run Code Online (Sandbox Code Playgroud) 我有一个实现增量搜索的应用程序.我有一个匹配的unicode字符串目录,并将它们与给定的"key"字符串匹配; 如果目录字符串按顺序包含键中的所有字符,则它是"命中",如果目录字符串中的关键字符集群,则排序更好.
无论如何,这工作正常,并完全匹配的Unicode,让"OST"将匹配" OST blocket"或"R OST "或"R ö d ST恩".
无论如何,现在我想实现折叠,因为在某些情况下,区分诸如"á"或"é"的目录字符和关键字符"a"或"e"是没有用的.
例如:"Ole"应匹配"Olé"
我如何在Python中最好地实现这个unicode-folding matcher?效率非常重要,因为我必须将数千个目录字符串与短的给定键匹配.
它不必将其变成ascii; 实际上,算法的输出字符串可以是unicode.留下一个角色比剥离它更好.
我不知道接受哪个答案,因为我使用了两者兼而有之.采用NKFD分解并删除组合标记几乎可以完成,我只添加了一些自定义音译.这是现在看起来的模块:(警告,包含内联的unicode字符,因为编辑这种方式更好.)
# -*- encoding: UTF-8 -*-
import unicodedata
from unicodedata import normalize, category
def _folditems():
_folding_table = {
# general non-decomposing characters
# FIXME: This is not complete
u"?" : u"l",
u"œ" : u"oe",
u"ð" : u"d",
u"þ" : u"th",
u"ß" : u"ss",
# germano-scandinavic canonical transliterations
u"ü" : u"ue",
u"å" : u"aa",
u"ä" : u"ae",
u"æ" : u"ae",
u"ö" : u"oe",
u"ø" …Run Code Online (Sandbox Code Playgroud) 嗨我发现在postgres数据库中,我们无法配置默认的重音敏感度(在旧邮件交换机上).
有没有办法让_icontains对特殊字符(é,è,à,ç,ï)不敏感,或者我必须使用postgres regex用_iregex替换两边(ç-> c,é-> e ...) ?
编辑:这个问题很旧,并且在1.8之前为django的用户保留.对于那些使用最新django版本的人来说,这里是新的方式:https://docs.djangoproject.com/en/dev/ref/contrib/postgres/lookups/#std : fieldlookup-unaccent
我正在尝试从http://dictionary.reference.com/browse/apple?s=t等字典网站下载一些内容
我遇到的问题是原始段落有所有那些波浪线,反向字母等等,所以当我读取本地文件时,我最终会得到像\ x85,\ xa7,\ x8d等那些有趣的转义字符. .
我的问题是,有什么方法可以将所有转义字符转换为各自的UTF-8字符,例如,如果有'à'我如何将其转换为标准'a'?
Python调用代码:
import os
word = 'apple'
os.system(r'wget.lnk --directory-prefix=G:/projects/words/dictionary/urls/ --output-document=G:\projects\words\dictionary\urls/' + word + '-dict.html http://dictionary.reference.com/browse/' + word)
Run Code Online (Sandbox Code Playgroud)
我在Windows 7系统上使用wget-1.11.4-1(不要杀了我的Linux用户,这是客户端的要求),并且用Python 2.6脚本文件启动了wget exe.