[英]How to compare the string stored in two list in python?
问题在于循环
我不能迭代,并检查从价值solu
与dgu
名单。
它在输出上方print(solu)
upto
print(solu)
后来使用的循环滞后并在没有输出的情况下停止,我在这里一无所知。
如果字符串存在于来自不同来源的两个不同文件中,有人可以解释如何比较字符串吗?
from pandas import *
import pandas as pd
import csv
import re
import deepdiff
from pprint import pprint
import xlrd
from difflib import SequenceMatcher
import xlsxwriter
import tocamelcase
from spellchecker import SpellChecker
import numpy as np
xlsx = ExcelFile('WrongSpelling.xlsx')
df = xlsx.parse(xlsx.sheet_names[0])
dg = pd.read_csv("pfm.csv", usecols = ['Place Id','Name','Category'])
pla = dg['Place Id'].values.tolist()
nam = dg['Name'].values.tolist()
cat = dg['Category'].values.tolist()
print()
df2 = pd.DataFrame(df, columns = ['Spelling'])
bat= df2['Spelling'].values.tolist()
namo = [x.lower() for x in nam]
bato = [x.lower() for x in bat]
sol = set(namo) & set(bato)
solu = list(sol)
dgu= dg.values.tolist()
nam=list(nam)
print(solu)
print()
print("The Count of Matches with the incorrect data is" ,len(solu))
print(dg[:5])
print()
while i < len(dgu):
while i < len(solu):
# a = solu[i]
# b = dgu[i]
# c = nam[i]
if solu[i] in dgu[i]:
print(dgu[i])
else:
pass
i+=1
您的内部 while 循环使用变量i
作为它通过solu
长度时的条件,但是您在该 while 循环中递增,因此它将永远循环检查i < len(solu)
,如果它永远不会评估为False
它第一次进入循环。
正如@offeltoffel 所提到的,for 循环在这里似乎更适合您的需要。 如果没有可验证的示例,就无法编译您的代码,以下是 for 循环的样子:
for i in range(len(dgu):
for j in range(len(solu)):
if solu[j] in dgu[i]:
print(dgu[i])
# don't need elsepass here, as it serves no purpose
# don't need to increment i/j in a for loop manually as it iterates through the range created from the length of dgu/solu
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.