相关疑难解决方法(0)

删除Python unicode字符串中重音的最佳方法是什么?

我在Python中有一个Unicode字符串,我想删除所有的重音符号(变音符号).

我在Web上发现了一种在Java中执行此操作的优雅方法:

  1. 将Unicode字符串转换为长标准化形式(字母和变音符号使用单独的字符)
  2. 删除Unicode类型为"变音符号"的所有字符.

我是否需要安装pyICU等库?或者只使用python标准库?那python 3怎么样?

重要说明:我想避免代码使用重音字符到非重音符号的显式映射.

python unicode diacritics python-2.x python-3.x

462
推荐指数
12
解决办法
23万
查看次数

在python中替换大量字符串?

假设我有一个看起来像这样的字符串:

str = "The &yquick &cbrown &bfox &Yjumps over the &ulazy dog"
Run Code Online (Sandbox Code Playgroud)

您会注意到字符串中有很多位置,其中有一个&符号,后跟一个字符(例如"&y"和"&c").我需要用字典中的适当值替换这些字符,如下所示:

dict = {"&y":"\033[0;30m",
        "&c":"\033[0;31m",
        "&b":"\033[0;32m",
        "&Y":"\033[0;33m",
        "&u":"\033[0;34m"}
Run Code Online (Sandbox Code Playgroud)

最快的方法是什么?我可以手动找到所有的&符号,然后循环通过字典来改变它们,但这似乎很慢.做一堆正则表达式替换似乎也很慢(我的实际代码中将有一个大约30-40对的字典).

任何建议表示赞赏,谢谢.

编辑:

正如在这个问题的评论中所指出的,我的字典是在运行时之前定义的,并且在应用程序生命周期的过程中永远不会改变.它是ANSI转义序列的列表,其中将包含大约40个项目.我要比较的平均字符串长度大约为500个字符,但最多可达5000个字符(但这些字符很少见).我目前也在使用Python 2.6.

编辑#2 我接受Tor Valamos的回答是正确的,因为它不仅提供了有效的解决方案(虽然它不是最好的解决方案),而是考虑了所有其他解决方案并做了大量的工作来比较所有这些.这个答案是我在StackOverflow上遇到过的最好,最有帮助的答案之一.感谢你.

python regex string performance replace

42
推荐指数
4
解决办法
2万
查看次数

Python:删除字符串列表中的多个字符

有这样的清单:

x = ['+5556', '-1539', '-99','+1500']
Run Code Online (Sandbox Code Playgroud)

如何以漂亮的方式删除+和 - ?

这有效,但我正在寻找更多的pythonic方式.

x = ['+5556', '-1539', '-99', '+1500']
n = 0
for i in x:
    x[n] = i.replace('-','')
    n += 1
n = 0
for i in x:
    x[n] = i.replace('+','')
    n += 1
print x
Run Code Online (Sandbox Code Playgroud)

编辑

+-并不总是处于领先地位; 他们可以在任何地方.

python string list

7
推荐指数
3
解决办法
5万
查看次数

如何替换字符串中的字符列表

我有一个搜索字符串 如果搜索中的字符匹配,则用 None 替换

sear = '!%'
special_characters = ['!', '"', '#', '$', '%','(',')']
for remove_char in special_characters:
   search_value = re.sub(remove_char, '', sear)
Run Code Online (Sandbox Code Playgroud)

我的输出出错了

预期是无

sear = 'ABC!%DEF'
Expected is 'ABCDEF'
Run Code Online (Sandbox Code Playgroud)
sear = 'ABC,DEF'
Expected is 'ABC,DEF'
Run Code Online (Sandbox Code Playgroud)

python

1
推荐指数
1
解决办法
82
查看次数

在python中拆分和分离

我是Python新手,我想知道如何用逗号(,)和冒号分割(:).我正在尝试加油站问题,我想从文本文件中读取这样的内容:

1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8
Run Code Online (Sandbox Code Playgroud)

我还想打开并从文件中读取这些数据并将其存储在链表中.

到现在为止我做了这个:

def GasStation(strArr):
    strArr = []

    f = open('Details.txt', 'r')
    for line in f:
        strArr.append(line)

    amount, tank = int(strArr[0]),0
    stations = [amount.split(":") for i in (strArr[1:] + strArr[1:-1])]
    for curr in range(start, start+amount):
        tank = tank + int(stations[curr][0]) - int(stations[curr][1])
    if tank < 0: sys.exit()
    if tank >= 0: return start+1
    else: tank = 0
    return "not"
Run Code Online (Sandbox Code Playgroud)

我也想打印作为答案的索引.

请帮帮我,我不明白为什么不给我打印答案.

谢谢.

python algorithm

0
推荐指数
1
解决办法
513
查看次数

无法从长字符串中删除某些符号

在过去的几个小时里,我一直在尝试用一根镜头从一根长串中踢出一些符号,但是我怎么也不知道如何删除它们.如果我去使用.replace()函数,它将是一个更丑陋的方法,因为符号的数量不止一个,并且函数变得过长而无法覆盖它们.任何替代方式删除它们将非常感激.

这是我试过的:

exmpstr = "Hi there Sam! Don't you know that Alex (the programmer) created something useful or & easy to control"

print(exmpstr.replace("'","").replace("(","").replace(")","").replace("&",""))
print(exmpstr.replace("['()&]","")) #I know it can't be any valid approach but I tried
Run Code Online (Sandbox Code Playgroud)

我想要踢出的是'()&这个字符串中的符号,而不是我尝试使用.replace()函数的方式.

python string symbols python-3.x

-1
推荐指数
1
解决办法
69
查看次数