Python: как записать вывод скрипта python в файл в той же строке, разделенной табуляцией - PullRequest
0 голосов
/ 23 февраля 2019

Я новичок в Python (2.7.15).Я пытаюсь добавить вывод моего скрипта Python в текстовый файл, разделенный вкладкой.

Ниже приведена часть моего кода:

for key,value in d.iteritems():
    with open('output.txt', 'a') as file:
        file.write(key + "\t" + value + "\t")
.....
....
 for item in data["response"]["docs"]:
        titleValue = (item['title'])
 with open('/tmp/output.txt', 'a') as file:
        file.write(titleValue + "\n")

Мой выходной файл выглядит следующим образом:

FirstKey    FirstValue
    FirstTitle
SecondKey    SecondValue
    SecondTitle

По сути, я хочу напечатать значения в виде значений, разделенных табуляцией, в той же строке и напечатать следующую строку в виде значений, разделенных табуляцией, в новой строке и т. Д., Как показано ниже:

FirstKey    FirstValue    FirstTitle
SecondKey   SecondValue   SecondTitle

Как мне это сделать?file.write печатает его в новой строке.Я хочу, чтобы он печатался в одной строке

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Гораздо более питонно использовать %, format и join, чем +.

Во-первых, join выполняется быстрее, особенно когда количество текста велико, а вашкод более понятен.следующим образом:

words = ["Thanks", "for", "contributing", "an", "answer", "to", "Stack", "Overflow!"]
text = "\t".join(words)

Во-вторых, format может форматировать ваш текст так, как вы хотите.следующим образом:

text1 = "{}\t{}\t{}\t".format(1, 'A', 1.343)  # output: 1   A   1.343
text2 = "%04d\t%5f" % (1, 3.1415926)   # output: 0001   3.141593
0 голосов
/ 23 февраля 2019

Во-первых, следует отметить, что file.write() не добавляет неявно никаких символов новой строки, и те переводы строк, которые вы получаете, передаются каким-либо образом в аргументе, предоставленном этой функции.

К сожалению, это не ясно изпример того, как получаются записанные ключи и значения.Однако обратите внимание, что строки заголовка (например, строка с FirstTitle) содержат отступ перед самим заголовком, возможно, символ табуляции.Исходя из этого, я бы предположил, что значения в словаре d являются строками, оканчивающимися символом новой строки.

Таким образом key + "\t" + value + "\t" (записывается в файл) приведет к чему-то вроде "FirstKey\tFirstValue\n\t", что объясняетвыход вы получаете.Чтобы получить ожидаемые результаты, убедитесь, что эти значения не содержат завершающих символов новой строки, например, вызвав для них str.rstrip :

value = value.rstrip()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...