如何将文本更改为数字并在Python中保存到数组中

时间:2016-04-29 13:26:12

标签: python html

我正在尝试将价格数据保存到Excel文件中。我从网站获取数据作为文本,现在我想创建一个包含数据的数组。到目前为止,我的代码看起来像这样:

    r = requests.get(url)
    data = BeautifulSoup(r.text)
    my_prices = []
    prices = data.find_all("example", {"class":"example"})
    index = 0
    for price in prices:
       print prices[index].text
       index += 1

我的输出如下:

€2,75
€9,00
€17,50
€2,75
€3,00
€2,50
€2,75
€4,00
€4,00
€0,50
€2,50
€2,50
€3,25
€2,50
€2,50
€2,50
€2,50
€2,50
€4,50
€2,50
€2,00
€4,00
€10,50
€16,50

如果尝试在for循环中添加数组,但我无法弄清楚如何。我是Python的初学者!提前致谢。

3 个答案:

答案 0 :(得分:2)

您可以使用列表推导来迭代"示例"价格并提取每个价格的文本:

r = requests.get(url)
data = BeautifulSoup(r.text)
my_prices = [price.text for price in data.find_all("example", {"class":"example"})]

现在您的问题是如何将文本更改为数字。如果要将它们保留为字符串,则可以剥离货币符号,如果在您的语言环境中有意义,则可以选择用小数点替换逗号。此方法在Python 2中使用unicode.translate()

trans_table = {ord(u'\u20ac'): None, ord(u','): u'.'}
my_prices = [price.text.translate(trans_table)
                for price in data.find_all("example", {"class":"example"})]

如果你想要它们作为花车:

my_prices = [float(price.text.translate(trans_table))
                for price in data.find_all("example", {"class":"example"})]

答案 1 :(得分:0)

您可以尝试删除并将,替换为.

values =[]    
for price in prices:
   values.append(prices[index].text.strip('€').replace(',','.'))
   index += 1
values_to_decimal = map(float, values) # convert values to float

如果只需要用逗号,

保存在列表中
values =[]    
for price in prices:
   values.append(prices[index].text.strip('€'))
   index += 1

问候!

答案 2 :(得分:0)

是的,那很简单你已经创建了这个列表" my_prices"用那个。

您的密码:

.
.
.
my_price=[]
for price in prices:
       print prices[index].text
       index += 1 

您的代码(由我更新):

.
.
.
my_price=[]
for price in prices:
       values=prices[index].text.strip('€').replace(',','.')
       my_price.append(float(values))
       index += 1 
print(my_price)

所有价格都存储在" my_prices"阵列。 希望!它有所帮助!