为什么我在写入文件时出现不必要的换行符?
Why I'm getting unnecessary line break while writing to a file?
我有一个 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"
这可能是什么问题?
您必须有一个尾随换行符:
page_name.rstrip()
所以 cmd 应该是这样的:
cmd = "SET 'ABC.{}.IO_{}' [ FALSE ]\n".format(page_name.rstrip(),cell_text)
我有一个 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"
这可能是什么问题?
您必须有一个尾随换行符:
page_name.rstrip()
所以 cmd 应该是这样的:
cmd = "SET 'ABC.{}.IO_{}' [ FALSE ]\n".format(page_name.rstrip(),cell_text)