![](/img/trans.png)
[英][Python]Check if any string in a list is contains any string in another list
[英]Check if a python series contains any string in another list
我有一系列由24個字符組成的等長字符串,例如
my_series = ['ThisIsASentenceXXXXXXXXX', 'SoIsThisXXXXXXXXXXXXXXXX', 'YouGetThePointXXXXXXXXXX']
我也有一個列表,其中包含等長的4個字符的字符串,例如
my_list = ['This', 'XXXX', 'GetT']
我想將my_list中的每個條目與my_series中的每個條目中的4個字符的每個塊進行比較,並返回在其中找到列表字符串的my_series項目。
例如,對於my_list中的字符串'This',我希望返回my_series項目1和2,而對於'XXXX',則要返回my_series項目1,2,3。
下面的生成器將創建一個二維列表。 每個列表將包含任何匹配項,並且其位置將匹配my_list索引。
n_list = [[x for x in my_series if item in x] for item in my_list]
輸出:
[['ThisIsASentenceXXXXXXXXX','SoIsThisXXXXXXXXXXXXXXXX'],['ThisIsASentenceXXXXXXXXX','SoIsThisXXXXXXXXXXXXXXXX','YouGetThePointXXXXXXXXXX'],['YouGetThePointXXXXXXXXXX']]
因此n_list[0]
包含my_list[0]
等的匹配項...希望對您有所幫助!
您需要將my_series
每個條目分成6個塊:
serires_chunks = [(s[0:4], s[4:8], s[8:12], s[12:16], s[16:20], s[20:24])
for s in my_series]
然后,您可以遍歷此塊以找到匹配的項目:
for item in my_list:
for index, chunks in enumerate(serires_chunks):
for place, chunk in enumerate(chunks, 1):
if item == chunk:
location = my_series[index]
print("Found '{item}' in '{location}' at {place}".format(**locals()))
您將獲得:
Found 'This' in 'ThisIsASentenceXXXXXXXXX' at 1
Found 'This' in 'SoIsThisXXXXXXXXXXXXXXXX' at 2
Found 'XXXX' in 'ThisIsASentenceXXXXXXXXX' at 5
Found 'XXXX' in 'ThisIsASentenceXXXXXXXXX' at 6
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 3
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 4
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 5
Found 'XXXX' in 'SoIsThisXXXXXXXXXXXXXXXX' at 6
Found 'XXXX' in 'YouGetThePointXXXXXXXXXX' at 5
Found 'XXXX' in 'YouGetThePointXXXXXXXXXX' at 6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.