我正在从两个不同的来源中删除一些文本.他们每个人都可以在不同的地方犯错,他们不会识别一封信/一组信件.如果他们不认识某事,那就换成了?例如,如果单词是Roflcopter,则一个源可能返回Ro?copter,而另一个源,Roflcop?er.我想要一个函数来返回两个匹配是否相同,允许多个?s.例:
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
Run Code Online (Sandbox Code Playgroud)
到目前为止,我可以使用正则表达式将一个OCR与一个完美的OCR匹配:
>>> def match(tn1, tn2):
tn1re = tn1.replace("?", ".{0,4}")
tn2re = tn2.replace("?", ".{0,4}")
return bool(re.match(tn1re, tn2) or re.match(tn2re, tn1))
>>> match("Roflcopter", "Roflcop?er")
True
>>> match("R??lcopter", "Roflcopter")
True
Run Code Online (Sandbox Code Playgroud)
但是当它们都在不同的地方时,这不起作用:
>>> match("R??lcopter", "Roflcop?er")
False
Run Code Online (Sandbox Code Playgroud) 我正在编写一个机器人,使用他们的API 在Betfair网站上下注Python.我想在比赛时投注足球(足球)比赛.
我编写了一个XML feed来为我提供来自游戏的实时数据,但是XML Feed并不总是像Betfair那样使用与橄榄球队相同的名称.
例如,当提到曼联时,Betfair可能使用"Man Utd",而XML feed可能使用"Man United"或其他一些变体.我不仅限于热门市场,因此建立标准的Betfair到XML名称转换表是不可行的.
我正在尝试使用某种概率字符串匹配来表明两个数据源指的是同一个团队.
到目前为止,我已经玩过牧师,这似乎做一些贝叶斯计算,但我不认为我使用得当,因为我必须向下突破串入字符train的guesser.然后我简单地平均每个字母与每个名字相关联的概率,我知道这在数学上是不正确的,但我认为这可能是一个可行的启发式测试.
这是我的代码:
import scorefeed
from reverend.thomas import Bayes
guesser = Bayes()
teams=['home','away']
def train(team_no, name):
for char in name:
guesser.train(teams[team_no], char)
def untrain(team_no, name):
for char in name:
guesser.untrain(teams[team_no], char)
def guess(name):
home_guess = 0.0
away_guess = 0.0
for char in name:
if len(guesser.guess(char)) > 0:
for guess in guesser.guess(char):
if guess[0] == teams[0]:
home_guess = home_guess + guess[1]
print home_guess
if …Run Code Online (Sandbox Code Playgroud) python algorithm artificial-intelligence probability string-matching
我正在寻找一种有效的方法来提取最短的重复子串.例如:
input1 = 'dabcdbcdbcdd'
ouput1 = 'bcd'
input2 = 'cbabababac'
output2 = 'ba'
Run Code Online (Sandbox Code Playgroud)
我将不胜感激与此问题相关的任何答案或信息.
另外,在这篇文章中,人们建议我们可以使用正则表达式
re=^(.*?)\1+$
Run Code Online (Sandbox Code Playgroud)
找到字符串中最小的重复模式.但是这样的表达式在Python中不起作用并且总是返回一个不匹配(我是Python的新手,也许我想念一些东西?).
- - 跟进 - -
这里的标准是寻找最短的非重叠模式,其长度大于1并且具有最长的总长度.
我正在使用大量的产品数据集(约100万).这些产品来自许多不同的来源,因此它们的数据列表不一致.其中一个重大问题是差异产品品牌名称(约17,000个独特品牌).有些品牌需要多达10个差异,需要将它们联系在一起.
问题:
示例数据集
Black Diamond
Black Diamond (Uda)
Black Diamond Co
Black Diamond Eq Ltd
Black Diamond Eqp #76800
Black Diamond Equipment
Black Dog Machine Llc
Black Dome Press
Black Dot
Black Dragon
Black Fire
Black Flys
Black Forest Girl
Black Gold
Black Hawk Inc.
Black Hills
Black Knight
Black Label
Black Magic …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种高效的算法,能够找到与特定字符串匹配的所有模式。模式集可能非常大(超过100,000个),并且可能是动态的(随时添加或删除的模式)。模式不一定是标准的regexp,它们可以是regexp的子集或类似于shell模式的东西(即:)file-*.txt。最好使用正则表达式子集的解决方案(如下所述)。
仅供参考:我对基于RegExp列表的蛮力方法不感兴趣。
通过简单的正则表达式,我的意思是一个正则表达式支持?,*,+,字符类[a-z]和可能的逻辑运算符|。
为了阐明我的需求:我希望找到所有与URL匹配的模式:
http://site1.com/12345/topic/news/index.html
Run Code Online (Sandbox Code Playgroud)
响应应该是基于以下模式设置的这些模式。
http://*.site1.com/*/topic/*
http://*.site1.com/*
http://*
Run Code Online (Sandbox Code Playgroud)
模式集:
http://*.site1.com/*/topic/*
http://*.site1.com/*/article/*
http://*.site1.com/*
http://*.site2.com/topic/*
http://*.site2.com/article/*
http://*.site2.com/*
http://*
Run Code Online (Sandbox Code Playgroud) 我想存储大量(〜数千)字符串,并能够使用通配符执行匹配.
例如,以下是示例内容:
Folder1Folder1/Folder2Folder1/*Folder1/Folder2/Folder3Folder2/Folder**/Folder4*/Fo*4(每行也有附加数据,如标签,但匹配仅针对该键)
以下是我想要与数据匹配的示例:
Folder1Folder1/Folder2/Folder3Folder3(*在这里是一个通配符,它可以是一个不同的角色)
我天真地考虑将它存储在MySQL表中并使用%通配符与LIKE操作符,但MySQL索引只适用于通配符左侧的字符,在我的情况下它可以在任何地方(即%/Folder3).
所以我正在寻找一种可以在PHP中使用的快速解决方案.我是开放的:它可以是一个单独的服务器,一个使用正则表达式文件的PHP库,...
php database datasource string-matching database-performance
我有一个pandas Dataframe,其中一列是文件列表
import pandas as pd
df = pd.read_csv('fname.csv')
df.head()
filename A B C
fn1.txt 2 4 5
fn2.txt 1 2 1
fn3.txt ....
....
Run Code Online (Sandbox Code Playgroud)
我想删除.txt每个条目中的文件扩展名filename.我该如何做到这一点?
我试过了:
df['filename'] = df['filename'].map(lambda x: str(x)[:-4])
Run Code Online (Sandbox Code Playgroud)
但是当我查看之后的列条目时df.head(),没有任何改变.
怎么做到这一点?
我的问题是,我们希望用户输入这样的代码:
639195-EM-66-XA-53-WX在输入中的某处,因此结果可能如下所示:The code is 639195-EM-66-XA-53-WX, let me in。如果他们在代码中犯了一个小错误(编辑距离为 1),我们仍然希望匹配该字符串。例如The code is 739195-EM-66-XA-53-WX, let me in。(改为6代码7的第一个字母)
即使用户跳过破折号,算法也应该匹配,并且应该忽略小写/大写字母。这些要求很容易满足,因为我可以删除所有破折号并执行 to_uppercase。
有类似的算法吗?
生成与原始代码距离为 1 的所有字符串的计算成本很高。
我也在考虑使用类似 Levenshtein distance 的东西,但忽略用户在第二个字符串中添加的缺失字母,但这会允许代码中间出现错误的字母。
在用户输入中搜索代码似乎好一点,但仍然不是很干净。
有没有办法在powershell中判断指定文件是否包含指定的字节数组(在任意位置)?
\n\n就像是:
\n\nfgrep --binary-files=binary "$data" "$filepath"\nRun Code Online (Sandbox Code Playgroud)\n\n当然,我可以写一个简单的实现:
\n\nfunction posOfArrayWithinArray {\n param ([byte[]] $arrayA, [byte[]]$arrayB)\n if ($arrayB.Length -ge $arrayA.Length) {\n foreach ($pos in 0..($arrayB.Length - $arrayA.Length)) {\n if ([System.Linq.Enumerable]::SequenceEqual(\n $arrayA,\n [System.Linq.Enumerable]::Skip($arrayB, $pos).Take($arrayA.Length)\n )) {return $pos}\n }\n }\n -1\n}\n\nfunction posOfArrayWithinFile {\n param ([byte[]] $array, [string]$filepath)\n posOfArrayWithinArray $array (Get-Content $filepath -Raw -AsByteStream)\n}\n\n// They return position or -1, but simple $false/$true are also enough for me.\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\x94 但速度非常慢。
\n我有一个 Pandas 数据框,其中包含名为Potential Word, 的两列Fixed Word。该Potential Word列包含不同语言的单词,其中包含拼写错误的单词和正确的单词,该Fixed Word列包含对应的正确单词Potential Word。
下面我分享了一些样本数据
| 潜在词 | 固定词 |
|---|---|
| 例子 | 例子 |
| 皮波尔 | 人们 |
| 疙瘩 | 疙瘩 |
| 尤尼克 | 独特的 |
我的 vocab 数据框包含 600K 唯一行。
我的解决方案:
key = given_word
glob_match_value = 0
potential_fixed_word = ''
match_threshold = 0.65
for each in df['Potential Word']:
match_value = match(each, key) # match is a function that returns a
# similarity value of two strings
if match_value > glob_match_value and match_value > match_threshold: …Run Code Online (Sandbox Code Playgroud) python optimization pattern-matching string-matching dataframe
string-matching ×10
python ×5
algorithm ×3
regex ×3
dataframe ×2
binaryfiles ×1
database ×1
datasource ×1
grep ×1
optimization ×1
pandas ×1
php ×1
powershell ×1
probability ×1
string ×1