首页 > 解决方案 > 在非英语字符串中查找子字符串 [乌尔都语字符串]

问题描述

我希望在乌尔都语的字符串中找到子字符串。例如,假设我有以下乌尔都语的字符串和子字符串:

fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"

substring1 = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
substring2 = "Urdu English Translator حاصل کریں - Microsoft Store ur-PK"
substring3 = "ببر شیر - آزاد دائرۃ المعارف، ویکیپیڈیا"
substring4 = "اقوام متحدہ - ویکیپیڈیا"
substring5 = "واقعہ کربلا - آزاد دائرۃ المعارف"
substring6 = "Inaugural Address - Urdu | JFK Library"
substring7 = "دنیا میں امریکہ کے مقام کے بارے میں صدر بائیڈن کا خطاب - United ..."
substring8 = "ایران امریکہ کشیدگی: امریکی صدور اور جنگوں کی مبہم قانونی ..."

目标是在每个子字符串中搜索/查找完整字符串中存在的单词,然后选择相应的子字符串进行进一步处理。特别是,任何子字符串中出现的最少单词应该是"آزاد دائرۃ"

在上面给出的示例中,应选择并返回substring1substring3substring4substring5 (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!对于substring1substring3substring4substring5,并且未找到!对于上面给出的所有其他子字符串。

请帮助我完成上述子字符串搜索任务。

标签: pythonstringsearchurdu

解决方案


你应该试试这个:

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-expectthen 它将执行except部分而不是抛出错误。


推荐阅读