如何在python中向csv文件添加新行


with open('Price.csv', 'w', newline = '', encoding= 'utf-8') as csvFile:
csvWriter = csv.writer(csvFile, delimiter=' ')
csvWriter.writerow("Price")
for item in items:

whole_price = item.find_elements(By.XPATH, './/span[@class="a-price-whole"]')
fraction_price = item.find_elements(By.XPATH, './/span[@class="a-price-fraction"]')
if whole_price != [] and fraction_price != []:
price = '.'.join([whole_price[0].text, fraction_price[0].text])
product_price.append(price)

else:
price = 0

csvWriter.writerow(product_price)
driver.quit()

试图找出如何在product_price后面添加price,并在末尾添加一个新的行字符。

这就是我的结局,我很困惑为什么。我需要单独打印行,并添加一个新的行。我以为writerow已经加了新的换行符了?

P r i c e
41.18 48.56 18.73 48.56 48.56 37.46 37.46 53.22 60.99 32.99 18.73 7.79 32.34 39.99 20.49 7.79 34.90 37.25 56.49 48.56 156.00 42.95 85.00 34.98 60.00 17.98 60.61 95.50 6.59 7.49 87.40 74.00 17.73 52.56 34.99 39.99 170.00 18.73 2.

writerow末尾不包含s表示将列表中的所有值写入一行。

你把所有的值放在一个列表中——所以它把它当作单行。

当您找到price时,您应该直接写row -但是price必须作为列表。

price = '.'.join([whole_price[0].text, fraction_price[0].text])

csvWriter.writerow( [price] )

或者您应该将price附加为单个值的列表

price = '.'.join([whole_price[0].text, fraction_price[0].text])
product_price.append( [price] )

,之后使用writerowss在末尾,将每个嵌套列表写为分隔行

csvWriter.writerows(product_price)  # with `s` at the end

BK_HR> BK_HR

BK_HR

BK_HR

BK_HR

BK_HR

BK_HR

BK_HR>

csvWriter.writerow( ["Price"] )

因为此时它将"Price"作为字符列表

csvWriter.writerow( ["P", "r", "i", "c", "e"] )

并写入字符之间的空格


编辑:

# PEP8: `lower_case_names` for variables `csv_file`, `csv_writer`
with open('Price.csv', 'w', newline='', encoding='utf-8') as csv_file:  
csv_writer = csv.writer(csv_file, delimiter=' ')
csv_writer.writerow( ["Price"] )
for item in items:
whole_price    = item.find_elements(By.XPATH, './/span[@class="a-price-whole"]')
fraction_price = item.find_elements(By.XPATH, './/span[@class="a-price-fraction"]')
if whole_price and fraction_price:
price = '.'.join([whole_price[0].text, fraction_price[0].text])
csv_writer.writerow( [price] )

PEP 8——Python代码风格指南

最新更新