Невозможно удалить последнюю пустую строку с помощью Python или пакетного скрипта - PullRequest
0 голосов
/ 25 сентября 2018

Мой файл Excel содержит:

ABC
DEF
GHI

Мое требование состоит в том, чтобы объединить все вышеупомянутые строки в одну строку, как показано ниже:

ABC or DEF or GHI

Ниже приведен код, который печатал строки Excelв текстовый файл.

wb = xlrd.open_workbook("abc.xlsx") 
sheet = wb.sheet_by_index(0) 
sheet.cell_value(0, 0)
with open("data.txt", "w") as dataFile:
for i in range(sheet.nrows):
    dataSet = sheet.cell_value(i, 0)
    print(dataSet, file=dataFile)

Но файл data.txt печатается как:

ABC
DEF
GHI
<---- this is a blank line ---->

Поэтому, когда я использую приведенный ниже код для объединения строк:

with open("data.txt", "r") as data:
for each_line in data:
    try:
        objList = each_line.replace("\n", " or ")
        print(objList, end='')

    except ValueError:
        pass

Это приводит к выводу ниже:

ABC or DEF or GHI or  --------->This is wrong

Требуемый вывод:

ABC or DEF or GHI  -------------> this is correct

Пожалуйста, предложите, где я пропускаю?Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Я взял пример содержимого из вашего примера, где blank.txt - это файл, последняя строка которого пуста.Принимая во внимание, что output.txt файл - это файл, который является новым файлом, полученным после удаления последней пустой строки.

1) Файл с пустой строкой

$ cat blank.txt
compponent
BO Applet
Software
Testing

$

2) Файл с пустой пустой строкой:

$ cat output.txt
compponent
BO Applet
Software
Testing
$

Код, который работает:

#!/usr/bin/python3
with open("blank.txt", 'r') as f:
    lines = f.read()
    with open("output.txt", 'w') as w:
        w.write(lines[:-1])
0 голосов
/ 25 сентября 2018

В чем здесь проблема?Попробуйте следующее:

# Let's assume you have a list named contents with whatever you need to store.
contents[-1].rstrip('\n') # Removing the trailing new line symbol for the last member

with open('cmdOut', 'w', encoding='utf-8') as output:
    for line in contents:
        output.write(line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...