You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python(pytest)中创建/追加CSV/Excel时拆分文本为多行?

解决CSV中用户名多行拆分写入的问题

问题根源

你当前代码里的user_list = col1.find_element(By.TAG_NAME, "ul").text获取的是整个<ul>标签下所有文本,浏览器会把每个<li>的内容用**换行符(\n)**拼接成一个字符串,直接写入CSV时会被当成单个单元格内容,所以显示为一行。

可行解决方案

方案1:拆分用户名并循环写入CSV

核心思路是把拼接的用户名字符串拆分成单个用户,然后每个用户对应一行写入,同时避免重复写入表头:

import csv
import time
import os
from selenium.webdriver.common.by import By

# 获取数据
user_list = col1.find_element(By.TAG_NAME, "ul").text
total_count = driver.find_elements(By.TAG_NAME, "tr")[3].find_element(By.CLASS_NAME, 'badge').text
current_time = time.strftime("%d%m%Y-%H%M%S")

# 拆分用户名为列表,过滤空行和多余空格
user_names = [name.strip() for name in user_list.split('\n') if name.strip()]

# 定义表头
header = ['User Name', 'User count', 'Time']

# 写入CSV
file_path = 'users.csv'
with open(file_path, 'a', encoding='UTF8', newline='') as f:
    writer = csv.writer(f)
    
    # 仅当文件不存在时写入表头
    if not os.path.exists(file_path):
        writer.writerow(header)
    
    # 循环写入每个用户的行
    for name in user_names:
        writer.writerow([name, total_count, current_time])

方案2:用Pandas写入CSV/Excel(更简洁)

如果允许使用第三方库,Pandas能更轻松处理格式,还支持直接写入Excel:

  1. 先安装依赖:
pip install pandas openpyxl  # openpyxl用于写入Excel
  1. 代码实现:
import pandas as pd
import time
import os
from selenium.webdriver.common.by import By

# 获取数据
user_list = col1.find_element(By.TAG_NAME, "ul").text
total_count = driver.find_elements(By.TAG_NAME, "tr")[3].find_element(By.CLASS_NAME, 'badge').text
current_time = time.strftime("%d%m%Y-%H%M%S")

# 拆分用户名
user_names = [name.strip() for name in user_list.split('\n') if name.strip()]

# 构造DataFrame
data = {
    'User Name': user_names,
    'User count': [total_count] * len(user_names),
    'Time': [current_time] * len(user_names)
}
df = pd.DataFrame(data)

# 写入CSV(追加模式)
df.to_csv('users.csv', mode='a', encoding='UTF8', header=not os.path.exists('users.csv'), index=False)

# 或者写入Excel(追加模式,需openpyxl)
with pd.ExcelWriter('users.xlsx', mode='a', engine='openpyxl', if_sheet_exists='overlay') as writer:
    df.to_excel(writer, sheet_name='Users', header=not os.path.exists('users.xlsx'), index=False)

关键说明

  • split('\n'):将<ul>的文本按换行拆分成单个用户名,strip()去除每个用户名前后的空格/换行符。
  • 表头判断:用os.path.exists检查文件是否存在,避免每次追加都重复写表头。
  • 循环写入:每个用户名对应一行,total_count和Time保持一致,符合你要的多行展示需求。

内容的提问来源于stack exchange,提问作者varun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 08:33:28