두 문자열 (listA
및 listB
) 목록간에 가장 가까운 일치를 얻으려고 시도하면 listC
이 생성됩니다.TypeError 가져 오는 중 : 문자열 목록을 사용할 때 'float'객체를 반복 할 수 없음
그 목적은 각 문자열이 일부 항목의 철자 오류를 수정해야하는 열을 나타내는 문자열 하나가있는 데이터 프레임을 정리해야하기 때문입니다.
내가 수정하려는 실제 열 테스트라고 :
print(test)
출력 : 내가 newTest
라는 목록으로 시험 열을 변환 내가 목록을 만든 다음
0 lychee
1 strawberry
2 nectarine
3 lychee
4 lychee
5 banana
6 raspberry
7 loga!!n
....
37497 grape
37498 apple
37499 rockmelon
Name: fruit_ate, Length: 37500, dtype: object
올바른 이름의 과일 :
newTest = list(test)
fruits = ['lychee',
'strawberry',
'nectarine',
'banana',
'raspberry',
'kiwi',
'apple',
'durian',
'pear',
'logan',
'jackfruit',
'grape',
'peach',
'watermelon',
'rockmelon',
'orange']
나는 d for 루프는 newList
을 거쳐 각 요소를 가져 와서 과일 목록에서 가장 가까운 항목을 반환합니다. 그러나 내 코드가 작동 한 직후에 작은 목록을 수정하는 것이 더 쉬울 것이라고 생각하여 newTest
목록을 수정하는 데 사용할 수 있습니다.
그래서 listA
과 listB
을 만들었습니다. 이 테스트 열의 값 중 일부를 listB
에 복사하고 목록 과일 값을 사용하여 listA
을 만들었습니다.
내가 그렇게 관리 방법이었다 : 나는 그것이 잘 작동하지만 내 newTest
리스트와 과일 목록에 동일한 알고리즘을 적용하는 경우가 작동하지 않습니다이 작업을 실행하면
listA = ['apple', 'banana', 'coco', 'grape', 'pear']
listB = ['ba88tana', 'peeaar', 'apple', 'ggra))pe']
listC = []
for i in listB:
listC.append(diff.get_close_matches(i, fruits, n=1, cutoff=0.5))
output: [['banana'], ['pear'], ['apple'], ['grape']]
, 그것은 말한다 : TypeError: 'float' object is not iterable
.
누군가가 그것을 고칠 수있는 방법이나 내가 할 수있는 다른 방법을 알고 있다면 매우 도움이 될 것입니다.
'newTest'의 값은 무엇입니까? – SethMMorton
오, 그게 listB 였어. 나는 그걸 잊어 버렸어. 죄송합니다./ –
[오류 잡기] (https://docs.python.org/3/tutorial/errors.html#handling-exceptions) 및 예외 패키지의 데이터를 검사하십시오. – wwii