2017-12-13 7 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

上記は正しい判断です。いずれにせよ、ありがとう。 –

関連する問題