Сохраните строку как одну строку в текстовом файле - PullRequest
0 голосов
/ 12 июля 2020

У меня много больших строк с большим количеством символов (около 1000-1500 символов), и я хочу записать строку в текстовый файл, используя python. Однако мне нужно, чтобы строки занимали только одну строку в текстовом файле.

Например, рассмотрим две строки:

string_1 = "Mary had a little lamb
which was as white
as snow"

string_2 = "Jack and jill
went up a hill 
to fetch a pail of
water"

Когда я записываю их в текстовый файл, я хочу строки должны занимать только одну строку, а не несколько строк.

текстовый файл, например:

Mary had a little lamb which was as white as snow
Jack and Jill went up a hill to fetch a pail of water

Как это можно сделать?

Ответы [ 5 ]

1 голос
/ 12 июля 2020

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

Интересный вопрос - как получить их снова в программу, если это необходимо, и вернуть их в соответствующие переменные.

Мне нравится использовать json (docs здесь ) для такого рода вещей, и вы можете заставить выводить все в одну строку. Это:

    import json

    string_1 = "Mary had a little lamb which was as white as snow"

    string_2 = "Jack and jill went up a hill to fetch a pail of water"

    strs_d = {"string_1": string_1, "string_2": string_2}

    with open("foo.txt","w") as fh:
        json.dump(strs_d, fh)

запишет в файл следующее:

{"string_1": "Mary had a little lamb which was as white as snow", "string_2": "Jack and jill went up a hill to fetch a pail of water"}

Это можно легко перезагрузить обратно в словарь и вытащить исходные строки.

Если вас не интересуют имена исходной строковой переменной, вы можете использовать такой список:

    import json

    string_1 = "Mary had a little lamb which was as white as snow"

    string_2 = "Jack and jill went up a hill to fetch a pail of water"

    strs_l = [string_1, string_2]

    with open("foo.txt","w") as fh:
        json.dump(strs_l, fh)

, и он выводит это:

["Mary had a little lamb which was as white as snow", "Jack and jill went up a hill to fetch a pail of water"]

который, когда перезагрузка из файла вернет все строки в список, который затем можно разделить на отдельные строки.

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

В вашем примере вывода этого нет, но ваш пример вывода также находится на более чем одной строке, и вопрос хотел, чтобы все это было в одной строке, поэтому ваши потребности не совсем ясны.

0 голосов
/ 12 июля 2020
total_str = [string_1,string_2]  
with open(file_path+"file_name.txt","w") as fp:  
     for i in total_str:
         fp.write(i+'\n')
     fp.close()
0 голосов
/ 12 июля 2020
In [36]: string_1 = "Mary had a little lamb which was as white as snow"
    ...:
    ...: string_2 = "Jack and jill went up a hill to fetch a pail of water"
In [37]: s = [string_1, string_2]

In [38]: with open("a.txt","w") as f:
    ...:     f.write(" ".join(s))
    ...:
0 голосов
/ 12 июля 2020

Построить одну строку из многострочной строки и затем записать в файл как обычно. В вашем примере действительно должны использоваться тройные кавычки, чтобы разрешить многострочные строки

string_1 = """Mary had a little lamb
which was as white
as snow"""

string_2 = """Jack and jill
went up a hill 
to fetch a pail of
water"""
with open("myfile.txt", "w") as f:
    f.write(" ".join(string_1.split("\n")) + "\n")
    f.write(" ".join(string_2.split("\n")) + "\n")
with open("myfile.txt") as f:
    print(f.read())

вывод

Mary had a little lamb which was as white as snow
Jack and jill went up a hill  to fetch a pail of water
0 голосов
/ 12 июля 2020

Вы можете разделить строку на строки, используя круглые скобки:

s = (
    "First line "
    "second line "
    "third line"
)

Вы также можете использовать тройные кавычки и удалить символы новой строки, используя strip и replace:

s = """
First line
Second line
Third line
""".strip().replace("\n", " ")
...