2017-12-13 18 views
1

구문 분석 후 목록 항목에서 공백을 제거 할 수 없습니다. 다음은 완전한 코드입니다.구문 분석 후 목록 항목에서 공백 제거

​from bs4 import BeautifulSoup 
from selenium import webdriver 
import pandas as pd 
import xlwings as xw 
driver = webdriver.PhantomJS() 
driver.get("http://www.cbr.ru/hd_base/dv/?P1=4") 
driver.find_element_by_id('UniDbQuery_FromDate').clear() 
driver.find_element_by_id('UniDbQuery_FromDate').send_keys('11.12.2017') 
driver.find_element_by_id('UniDbQuery_ToDate').clear() 
driver.find_element_by_id('UniDbQuery_ToDate').send_keys('13.12.2017') 
driver.find_element_by_id("UniDbQuery_searchbutton").click() 
z=driver.page_source 
driver.quit() 
soup=BeautifulSoup(z) 
x=[] 
for tag in soup.tbody.findAll('td'): 
    x.append(tag.text) 
y=x[1::2] 
y 
['381 970,85', '370 534,87', '374 626,19'] 

다음 코드는 공백을 제거하지 않습니다.

​for i in y: 
    i=i.replace(' ', '') 
​y 
['381 970,85', '370 534,87', '374 626,19'] 

다른 코드는 공백을 지우지 않습니다.

​y = [x.strip(' ') for x in y] 
​y 
['381 970,85', '370 534,87', '374 626,19'] 

이 문제를 해결하는 데 도움을주십시오. 코드를 시험하지 않은 경우 조언을 제공하지 마십시오.

인코딩에 문제가 있다고 생각합니다. 그러나 프로그래밍에 익숙하지 않기 때문에이 가정.

답변

0
y = ['381 970,85', '370 534,87', '374 626,19'] 
lst2 = [e.replace(' ', '') for e in y] 
print(lst2) 

두 번째 경우는 거의 권리입니다. 그러나 .strip은 문자열 안의 공백을 제거하지 않습니다.

첫 번째 경우에는 문자열이 i에 할당 된 다음 대체 결과가 i 비트에 나중에 할당됩니다. 그런 다음 버려집니다. 그것은 목록에 들어 가지 않습니다.

+0

감사합니다. 네가 옳아. –

0

y=['381 970,85', '370 534,87', '374 626,19'] y=' '.join(y) y.replace(',',' ').split()

출력 :

['381', '970', '85', '370', '534', '87', '374', '626', '19']

+0

그러나 목록의 3 개 요소 대신 9 개의 목록 요소가 구성되었습니다. –

+0

출력물을 어떻게 보이게 할 수 있습니까? –

+0

위 결정이 올바른 것입니다. 어쨌든, 고마워. –