相关疑难解决方法(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中的版本号?

我正在走一个包含鸡蛋的目录,将这些鸡蛋添加到鸡蛋中sys.path.如果目录中有相同.egg的两个版本,我想只添加最新版本.

我有一个正则表达式r"^(?P<eggName>\w+)-(?P<eggVersion>[\d\.]+)-.+\.egg$从文件名中提取名称和版本.问题是比较版本号,这是一个字符串2.3.1.

因为我正在比较字符串,2种类型超过10,但这对于版本来说不正确.

>>> "2.3.1" > "10.1.1"
True
Run Code Online (Sandbox Code Playgroud)

我可以做一些拆分,解析,转换为int等,我最终会得到一个解决方法.但这是Python,而不是Java.有比较版本字符串的优雅方法吗?

python version string-comparison

205
推荐指数
8
解决办法
9万
查看次数

Python 2如何比较字符串和int?为什么列表比较大于数字,而元组大于列表?

以下代码段使用输出进行注释(如ideone.com上所示):

print "100" < "2"      # True
print "5" > "9"        # False

print "100" < 2        # False
print 100 < "2"        # True

print 5 > "9"          # False
print "5" > 9          # True

print [] > float('inf') # True
print () > []          # True
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么输出是这样的?


实施细节

  • 这种行为是由语言规范强制执行的,还是由实现者决定的?
  • 任何主要的Python实现之间是否存在差异?
  • Python语言版本之间是否存在差异?

python comparison types python-2.x

172
推荐指数
2
解决办法
8万
查看次数

泡泡排序作业

在课堂上我们正在做排序算法,虽然我在谈论它们和编写伪代码时理解它们很好,但我在编写实际代码时遇到了问题.

这是我在Python中的尝试:

mylist = [12, 5, 13, 8, 9, 65]

def bubble(badList):
    length = len(badList) - 1
    unsorted = True

    while unsorted:
        for element in range(0,length):
            unsorted = False
            if badList[element] > badList[element + 1]:
                hold = badList[element + 1]
                badList[element + 1] = badList[element]
                badList[element] = hold
                print badList
            else:
                unsorted = True

print bubble(mylist)
Run Code Online (Sandbox Code Playgroud)

现在,这(据我所知)正确排序,但一旦完成它就会无限循环.

如何修复此代码以使函数正确完成并正确排序任何(合理)大小的列表?

PS我知道我不应该在函数中真正打印,我应该有一个返回,但我还没有这样做,因为我的代码还没有真正起作用.

python sorting algorithm bubble-sort

128
推荐指数
5
解决办法
11万
查看次数

如何正确排序内部带有数字的字符串?

可能重复:
Python是否具有用于字符串自然排序的内置函数?

我有一个包含数字的字符串列表,我找不到对它们进行排序的好方法.
例如,我得到这样的东西:

something1
something12
something17
something2
something25
something29
Run Code Online (Sandbox Code Playgroud)

用这个sort()方法.

我知道我可能需要以某种方式提取数字,然后对列表进行排序,但我不知道如何以最简单的方式进行.

python regex sorting string

101
推荐指数
1
解决办法
7万
查看次数

Python使用的字符串比较技术

我想知道Python如何进行字符串比较,更具体地说,它是如何在使用小于(<)或大于(>)运算符时确定结果的.

例如,如果我把print('abc' < 'bac')我得到True.我理解它比较了字符串中的相应字符,但是由于缺乏更好的术语而不清楚为什么还有更多的字符,"权重"放在第一个字符串中的a小于b(第一个位置)而不是a在第二个字符串(第二个位置)中小于b的事实.

python string comparison

51
推荐指数
4
解决办法
8万
查看次数

如何确定matplotlib图例中的项目顺序?

我不得不重新订购传奇中的物品,当时我不认为我应该这样做.我尝试:

from pylab import *
clf()
ax=gca()
ht=ax.add_patch(Rectangle((1,1),1,1,color='r',label='Top',alpha=.01))
h1=ax.bar(1,2,label='Middle')
hb=ax.add_patch(Rectangle((1,1),1,1,color='k',label='Bottom',alpha=.01))
legend()
show()
Run Code Online (Sandbox Code Playgroud)

最终以中上方为底.我怎样才能得到正确的订单?它不是由创建顺序决定的吗?

代码导致错误的图例项目顺序

更新:以下内容可用于强制执行订单.我认为这可能是最简单的方法,这看起来很尴尬.问题是什么决定了原始订单?

hh=[ht,h1,hb]
legend([ht,h1.patches[0],hb],[H.get_label() for H in hh])
Run Code Online (Sandbox Code Playgroud)

python matplotlib legend

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

Python:查找字符串中第一个数字的索引?

我怀疑这是一个正则表达式问题 - 而且是一个非常基本的问题,所以道歉.

在Python中,如果我有一个类似的字符串

"xdtwkeltjwlkejt7wthwk89lk"
Run Code Online (Sandbox Code Playgroud)

如何获取字符串中第一个数字的索引?

谢谢!

python regex string

40
推荐指数
6
解决办法
6万
查看次数

自然排序算法

如何在不同的编程语言中自然地对字符串数组进行排序?发布您的实现以及答案中的语言.

language-agnostic sorting algorithm natural-sort

23
推荐指数
4
解决办法
8695
查看次数

PHP的natsort函数的Python模拟(使用"自然顺序"算法对列表进行排序)

我想知道Python中是否有类似PHP natsort函数的东西?

l = ['image1.jpg', 'image15.jpg', 'image12.jpg', 'image3.jpg']
l.sort()
Run Code Online (Sandbox Code Playgroud)

得到:

['image1.jpg', 'image12.jpg', 'image15.jpg', 'image3.jpg']
Run Code Online (Sandbox Code Playgroud)

但我想得到:

['image1.jpg', 'image3.jpg', 'image12.jpg', 'image15.jpg']
Run Code Online (Sandbox Code Playgroud)

UPDATE

解决方案基于此链接

def try_int(s):
    "Convert to integer if possible."
    try: return int(s)
    except: return s

def natsort_key(s):
    "Used internally to get a tuple by which s is sorted."
    import re
    return map(try_int, re.findall(r'(\d+|\D+)', s))

def natcmp(a, b):
    "Natural string comparison, case sensitive."
    return cmp(natsort_key(a), natsort_key(b))

def natcasecmp(a, b):
    "Natural string comparison, ignores case."
    return natcmp(a.lower(), b.lower())

l.sort(natcasecmp);
Run Code Online (Sandbox Code Playgroud)

python sorting natsort

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