python - 在非英语字符串中查找子字符串 [乌尔都语字符串]
问题描述
我希望在乌尔都语的字符串中找到子字符串。例如,假设我有以下乌尔都语的字符串和子字符串:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring1 = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
substring2 = "Urdu English Translator حاصل کریں - Microsoft Store ur-PK"
substring3 = "ببر شیر - آزاد دائرۃ المعارف، ویکیپیڈیا"
substring4 = "اقوام متحدہ - ویکیپیڈیا"
substring5 = "واقعہ کربلا - آزاد دائرۃ المعارف"
substring6 = "Inaugural Address - Urdu | JFK Library"
substring7 = "دنیا میں امریکہ کے مقام کے بارے میں صدر بائیڈن کا خطاب - United ..."
substring8 = "ایران امریکہ کشیدگی: امریکی صدور اور جنگوں کی مبہم قانونی ..."
目标是在每个子字符串中搜索/查找完整字符串中存在的单词,然后选择相应的子字符串进行进一步处理。特别是,任何子字符串中出现的最少单词应该是"آزاد دائرۃ"。
在上面给出的示例中,应选择并返回substring1、substring3、substring4和substring5 (True),而不应选择其余子字符串(False)。
我编写了以下代码来实现上述给定任务:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
# extract the part after the "-" part
s = substring.split("-")[1]
# remove any spaces if they are present
s = s.strip()
if s in fullstring:
print("Found!")
else:
print("Not found!")
代码给我找不到!响应所有子字符串。而它应该返回Found!对于substring1、substring3、substring4和substring5,并且未找到!对于上面给出的所有其他子字符串。
请帮助我完成上述子字符串搜索任务。
解决方案
你应该试试这个:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
# extract the part after the "-" part
s = substring.split("-")[1]
# remove any spaces if they are present
s = s.strip().replace(".","")
if s in fullstring:
print("Found!")
else:
print("Not found!")
做striped
s
就像آزاد دائرۃ ...
,但你没有...
,fullstring
所以你得到Not found
。
或者,您可以使用.find()
这样的功能:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
# extract the part after the "-" part
s = substring.split("-")[1]
# remove any spaces if they are present
s = s.strip()
if fullstring.find(s)!=-1:
print("Found!")
else:
print("Not found!")
对于所有子字符串,你可以试试这个:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring1 = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
substring2 = "Urdu English Translator حاصل کریں - Microsoft Store ur-PK"
substring3 = "ببر شیر - آزاد دائرۃ المعارف، ویکیپیڈیا"
substring4 = "اقوام متحدہ - ویکیپیڈیا"
substring5 = "واقعہ کربلا - آزاد دائرۃ المعارف"
substring6 = "Inaugural Address - Urdu | JFK Library"
substring7 = "دنیا میں امریکہ کے مقام کے بارے میں صدر بائیڈن کا خطاب - United ..."
substring8 = "ایران امریکہ کشیدگی: امریکی صدور اور جنگوں کی مبہم قانونی ..."
allsub=[substring1,substring2,substring3,substring4,substring5,substring6,substring7,substring8]
for a in allsub:
try:
s=a.split("-")[1].strip(". ").strip()
except IndexError:
s=a.split("-")[0].strip(". ").strip()
if fullstring.find(s)!=-1:
print("Found!")
else:
print("Not found!")
输出 :
Found!
Not found!
Found!
Found!
Found!
Not found!
Not found!
Not found!
我已经创建了所有子字符串的列表,allsub
并检查了你在做什么。另外,我已经完成了,try-except
因为在某些子字符串中没有-
,我们选择了列表的第二个元素。所以,有时它会通过错误。但是如果我们使用try-expect
then 它将执行except
部分而不是抛出错误。
推荐阅读
- javascript - 从任意和深度嵌套的 JSON(带数组)中过滤属性的通用方法
- emscripten - Emscripten:如何从 16 MB 增加堆内存
- android - 片段中不可点击的选项菜单项
- vba - 如何通过从类别对话框中选择类别进行搜索?
- pytorch - RuntimeError:给定组 = 1,大小为 [32、3、3、3] 的权重,预期输入 [4、32、6、7] 有 3 个通道,但有 32 个通道
- laravel - 如何更改模块“模块”文件夹名称?
- r - 通过使用 optim() 最小化残差平方和来优化参数,将模型拟合到观测数据
- android - Json$Default 不能转换为 kotlinx.serialization.json.Json
- ios - 如何使用 Swift JSONDecoder 解码可以是数组或单个对象的 JSON 属性?
- mongodb - MongoDB 按年和班级分组然后计数 - 不工作