Quicker的python代码模块运行后,出现的乱码问题

使用问题 · 726 次浏览
TPlong 创建于 2024-06-11 11:23

将中文的内容,with open函数插入CSV后,CSV的内容显示为乱码。(应该是Quicker默认环境不是UTF-8编码格式造成的)

代码中插入的中文内容示例:

CSV文件中写入的中文结果示例:

 

完整代码示例如下:

##.py
sample_text = quicker.context.GetVarValue('纯文章内容')


import csv
import os

def split_text_into_chunks(text, chunk_size=3000):
    """
    将文本切割成指定大小的段落。
    
    参数:
    text (str): 需要被切割的原始文本。
    chunk_size (int): 每个段落的最大字符数,默认为3000。
    
    返回:
    list of str: 包含切割后段落的列表。
    """
    # 确保输入是字符串
    if not isinstance(text, str):
        raise ValueError("输入必须是字符串类型")
    
    # 文本长度小于等于指定长度时,直接返回原文
    if len(text) <= chunk_size:
        return [text]
    
    chunks = []  # 用于存储切割后的段落
    current_chunk = ""  # 当前正在构建的段落
    
    # 遍历文本中的每个字符
    for char in text:
        # 如果加上当前字符后不超过最大长度,则添加到当前段落
        if len(current_chunk) + len(char) <= chunk_size:
            current_chunk += char
        else:
            # 否则,将当前段落添加到列表中,并开始新的段落
            chunks.append(current_chunk)
            current_chunk = char
    
    # 不要忘记将最后一个段落也添加进去
    if current_chunk:
        chunks.append(current_chunk)
    
    return chunks

# 调用函数
chunks = split_text_into_chunks(sample_text, 3000)

# CSV文件路径
csv_file_path = r'C:\Users\123\Desktop\人工智能_立项_AI知识库.csv'

# 初始化计数器,用于第一列的序号(如果需要的话)
row_num = 0

# 检查文件是否存在,如果不存在则创建
with open(csv_file_path, mode='a+', newline='', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    
    # 移动到文件末尾,检查是否有内容(首次写入时定位)
    csvfile.seek(0, os.SEEK_END)
    if csvfile.tell() == 0:  # 文件为空
        # 写入表头,如果需要的话
        writer.writerow(['列1标题', '列2标题'])  # 添加第二列的标题

    # 遍历chunks列表
    for chunk in chunks:
        
        row_num += 1
        # 写入数据,第一列是递增的序号或根据实际情况调整,第二列是chunk的内容
        writer.writerow([row_num, "你说吧交定金扥竞赛反动看法送来将三点了京东"])  # 假设第一列是递增序号
        # 如果第一列不需要序号,可以直接写为:writer.writerow(['', chunk])
        
quicker.context.SetVarValue('text',chunks)

TPlong 2024-06-11 11:32 :

已解决,将a+写入的模式,改为w模式或者a模式即可

回复内容
TPlong 2024-06-11 11:31
#1

已解决,将a+写入的模式,改为w模式或者a模式即可

回复主贴