为什么我在写入文件时会遇到不必要的换行符?

时间:2015-08-09 17:09:57

标签: excel python-2.7 xlrd

我有一个excel文件,我从那里读取一些数据,并根据一些逻辑,我将excel文件内容写入一个单独的文件以及一些额外的数据。 我已经完成了所有事情,除了我正在获得的这个不必要的换行符。

我的计划:

from xlrd import open_workbook

def create_script():
    exl_file = open_workbook('DATA_SHEET.xls')
    data_sheet = exl_file.sheet_by_index(0)

    script_file.write("#Setting Inputs to FALSE values" + '\n\n')

    for row_idx in range(1, data_sheet.nrows):
        for col_idx in range(1):
            data_type = data_sheet.cell(row_idx,col_idx).value
            cell_text = data_sheet.cell(row_idx,col_idx+2).value
            if (data_type == 'Boolean'):
                if ('TRUE' not in cell_text) and (',' not in cell_text):
                    book.seek(0)
                    for line in book:
                        if('%' in line):
                            page_name = line
                        if(cell_text in line):
                            for src, target in replacement.iteritems():
                                page_name = page_name.replace(src, target)
                            cmd = "SET 'ABC." + page_name + ".IO_" + cell_text + "' [ FALSE ]" + "\n"
                            script_file.write(cmd)
                            break;  

replacement = {'%':'', ':modifiable':''}
script_file = open('script.txt', 'w')
book = open('lookupfile.txt', 'r')
create_script()
script_file.close()
book.close()

我得到的实际输出:

#Setting Inputs to FALSE values

SET 'ABC.Page_1
.IO_Variable_1' [ FALSE ]
SET 'ABC.Page_2
.IO_Variable_2' [ FALSE ]
SET 'ABC.Page_3
.IO_Variable_3' [ FALSE ]
SET 'ABC.Page_4
.IO_Variable_4' [ FALSE ]

预期输出:

#Setting Inputs to FALSE values

SET 'ABC.Page_1.IO_Variable_1' [ FALSE ]
SET 'ABC.Page_2.IO_Variable_2' [ FALSE ]
SET 'ABC.Page_3.IO_Variable_3' [ FALSE ]
SET 'ABC.Page_4.IO_Variable_4' [ FALSE ]

正如您所看到的,我在Page_1,Page_2等之后获得了换行符。 我相信这一行存在一些问题,但无法找出确切的原因。

cmd = "SET 'ABC." + page_name + ".IO_" + cell_text + "' [ FALSE ]" + "\n"

这可能是什么问题?

1 个答案:

答案 0 :(得分:2)

您必须有一个尾随换行符:

page_name.rstrip()

所以cmd应该是这样的:

 cmd = "SET 'ABC.{}.IO_{}' [ FALSE ]\n".format(page_name.rstrip(),cell_text)