我正在尝试将价格数据保存到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的初学者!提前致谢。
答案 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"阵列。 希望!它有所帮助!