我试图在Python 2.6中使用re在一系列更大的数字中找到每10个数字系列的数字.
我很容易就能抓住没有重叠的比赛,但我想要数字系列中的每场比赛.例如.
在"123456789123456789"
我应该得到以下列表:
[1234567891,2345678912,3456789123,4567891234,5678912345,6789123456,7891234567,8912345678,9123456789]
Run Code Online (Sandbox Code Playgroud)
我发现了对"前瞻"的引用,但我看过的例子只显示了数字对而不是更大的分组,我无法将它们转换为超出两位数.
是否有任何字符串距离算法没有考虑到单词的顺序?
以下算法未提供所需结果(在该示例中,所需结果应为1):
import jaro
jaro.jaro_winkler_metric(u'Michael Jordan',u'Jordan Michael')
>>>0.47
import Levenshtein
Levenshtein.ratio('Michael Jordan', 'Jordan Michael')
>>>0.5
from difflib import SequenceMatcher
SequenceMatcher(None, 'Michael Jordan', 'Jordan Michael').ratio()
>>>0.5
Run Code Online (Sandbox Code Playgroud)
制作它的一种方法是按字母顺序排列字符串,然后使用上述算法:
''.join(sorted('Michael Jordan'))
>>>' JMaacdehilnor'
''.join(sorted('Jordan Michael'))
>>>' JMaacdehilnor'
Run Code Online (Sandbox Code Playgroud)
但是这里姓名和姓氏的信息丢失了,不会有"稳定"的结果.
我创建了一个使用permutationsfrom 的函数,itertools它接受所有可能的单词编译并比较字符串并输出最大值.结果令人满意,但是当我必须比较数百万个名字时,整个程序真的很慢.
可以做的其他事情是对单词进行排序,例如:
' '.join(sorted('Michael Jordan'.split()))
>>>'Jordan Michael'
' '.join(sorted('Jordan Michael'.split()))
>>>'Jordan Michael'
Run Code Online (Sandbox Code Playgroud)
似乎很好的方式和简单的方法来减少计算,但我们放松了一些敏感的情况.例:
name1 = ' '.join(sorted('Bizen Dim'.split()))
>>>'Bizen Dim'
name2 = ' '.join(sorted('Dim Mpizen'.split()))
>>>'Dim Mpizen'
SequenceMatcher(None, name1, name2).ratio()
>>> 0.55
Run Code Online (Sandbox Code Playgroud)
这两个名字是相同的,有些人将'他们的名字'从'b'翻译成'mp'(我就是其中之一).用这种方式我们就失去了这个'匹配'.
是否有任何字符串距离算法比较单词而不考虑单词的顺序?或者是否有建议如何有效地实现所需的功能?
在 Python 中使用正则表达式(库 re(仅)),我想创建一个函数,该函数给出字符串中所有前导 0 的位置。
例如,如果字符串是:我的房子有 01 个花园和 003 个房间。我希望函数返回 13、27 和 28。
我尝试过例如:
import re
string = "My house has 01 garden and 003 rooms."
pattern = "(0+)[1-9]\d*"
print(re.findall(pattern,string))
Run Code Online (Sandbox Code Playgroud)
显然,输出给了我匹配但没有位置......
我的任务
我正在尝试使用正则表达式查找出现在字符串中的单词的位置
码
import re
# A random string
mystr = "there not what is jake can do for you ask what you play do for spare jake".upper()
match = re.search(r"[^a-zA-Z](jake)[^a-zA-Z]", mystr)
print match.start(1)
Run Code Online (Sandbox Code Playgroud)
输出量
18
Run Code Online (Sandbox Code Playgroud)
预期产量
我希望我的输出包含字符串的位置jake:
5, 17
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清,我正在尝试确定单词的位置。我相信我所做的就是找到索引,并且不确定如何使其按预期工作