【问题标题】:Keep enter space in text column when converting to csv转换为 csv 时在文本列中保留输入空格
【发布时间】:2023-02-09 14:35:10
【问题描述】:

我在 excel 中有数据,其中文本在最后一列中输入空格。这是我的数据示例:

如果我使用 python 转换为 csv,我的数据如下所示:

我需要的 TEXT 列将是这样的:

这是我的脚本:

import pandas as pd
import os
import numpy as np


WD = r'XXX'
os.chdir(WD) 

for file in os.listdir(WD):
    if file.endswith('.xlsx'):
        FILE = file

        sheet_names = pd.ExcelFile(FILE).sheet_names  

        for sn in sheet_names:
            OUTPUT_FILE = '{}_{}'.format(sn,FILE.replace('.xlsx','.csv'))
            df = pd.read_excel(FILE,)
            print(FILE, sn)

            for col in df.columns.to_list():
                df[col] = df[col].map({True: '', False: ''}).fillna(df[col])


                cn = ['IN', 'NAME', 'TEXT']
                df = df.reindex(columns = cn)

                df.to_csv(OUTPUT_FILE,sep='|',encoding='utf-8-sig',index=False)

你有什么主意吗?

【问题讨论】:

    标签: python pandas csv xlsx


    【解决方案1】:

    我希望这适用于您的解决方案,

    Excel 到 csv:

    import pandas as pd
    df = pd.read_excel('./keep_enter.xlsx')
    def replace_custom_func(x):
        new_str = ''
        if len(x) > 0:
            for i in x.split('
    '):
                new_str += f'"{i}"&CHAR(10)&'
            return "=" + new_str[:-10]
        else:
            return x
    df['Text'] = df['Text'].apply(lambda x: replace_custom_func(x))
    df.to_csv('keep_enter1.csv', sep='|', index=False)
    

    CSV 到 Excel:

    df = pd.read_csv('./keep_enter1.csv', sep='|')
    writer = pd.ExcelWriter('new_excel_replace12345.xlsx', engine='xlsxwriter')
    
    # # Convert the dataframe to an XlsxWriter Excel object.
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    
    # # Get the xlsxwriter workbook and worksheet objects.
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    format = workbook.add_format({'text_wrap': True})
    worksheet.set_column('C:D', None, format)
    worksheet.write_formula(1, 2, df['Text'][0])
    # # Close the Pandas Excel writer and output the Excel file.
    writer.save()
    

    输出:

    【讨论】:

    • 芽,我现在有这样的文字:住在英格兰 出生:12.08.2005 他的爱好是骑自行车。当我将文本列转换为 csv 时,我想保持与 xlsx 中相同的格式
    • 在 excel 中如果按 alt+enter,它会在单元格中换行,在文本中将其转换为 .您的 excel 是否包含(输入空格)作为文本?如果是这样,只需使用 df.to_csv('keep_enter1.csv', sep='|', index=False)
    • 我的 excel 不包含(输入空格)作为文本。我写这篇文章只是为了弄清楚它是关于什么的。对不起,也许这看起来令人困惑。但文本是单元格中的新行。
    • 我把我的文件的屏幕放在上面
    • 如果您按 alt+enter,它会在 excel 中换行,因此当您读取 excel excel 文件时,它将替换新行 .
    猜你喜欢
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-03
    • 2011-12-09
    • 1970-01-01
    相关资源
    最近更新 更多