问题描述
我希望在乌尔都语的字符串中查找子字符串。例如,假设我有以下乌尔都语字符串和子字符串:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring1 = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
substring2 = "Urdu English Translator حاصل کریں - Microsoft Store ur-PK"
substring3 = "ببر شیر - آزاد دائرۃ المعارف، ویکیپیڈیا"
substring4 = "اقوام متحدہ - ویکیپیڈیا"
substring5 = "واقعہ کربلا - آزاد دائرۃ المعارف"
substring6 = "Inaugural Address - Urdu | JFK Library"
substring7 = "دنیا میں امریکہ کے مقام کے بارے میں صدر بائیڈن کا خطاب - United ..."
substring8 = "ایران امریکہ کشیدگی: امریکی صدور اور جنگوں کی مبہم قانونی ..."
目标是在每个子串中搜索/找到出现在fullstring中的词,然后选择相应的子串进行进一步处理。特别是,任何子字符串中出现的最少单词应该是 "آزاد دائرۃ"。
在上面给出的示例中,应选择并返回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!")
代码给了我未找到!所有子字符串的响应。而它应该为 substring1、substring3、substring4 和 substring5 返回 Found!,和未找到!适用于上述所有其他子字符串。
请帮助我完成上述的子字符串搜索任务。
解决方法
你应该试试这个:
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
那么它会执行 except
部分而不是抛出错误。
试试看:
fullstring = "آزاد دائرۃ المعارف، ویکیپیڈیا"
substring1 = "افریقی نژاد امریکی شہری حقوق کی تحریک (1955–1968) - آزاد دائرۃ ..."
substring2 = "Urdu English Translator حاصل کریں - Microsoft Store ur-PK"
substring3 = "ببر شیر - آزاد دائرۃ المعارف، ویکیپیڈیا"
substring4 = "اقوام متحدہ - ویکیپیڈیا"
substring5 = "واقعہ کربلا - آزاد دائرۃ المعارف"
substring6 = "Inaugural Address - Urdu | JFK Library"
substring7 = "دنیا میں امریکہ کے مقام کے بارے میں صدر بائیڈن کا خطاب - United ..."
substring8 = "ایران امریکہ کشیدگی: امریکی صدور اور جنگوں کی مبہم قانونی ..."
allstrings = (substring1,substring8)
for a in allstrings:
try:
s = a.split("-")[1]
except:
s = a
s = s.strip().replace(".","")
if s in fullstring:
print("Found!")
else:
print("Not found!")
输出:
Found!
Not found!
Found!
Found!
Found!
Not found!
Not found!
Not found!