Python добавить строку строк в другую строку строк - PullRequest
1 голос
/ 02 мая 2020

Я новичок в Pyhton, поэтому, пожалуйста, не будь труден для меня. Я пытаюсь получить файл с именем results.txt, который должен содержать строки из двух разных файлов. У меня есть файл с именем:

to-read.txt:

api.domain.com
domain.com
www.domain.com

и файл с именем:

to-add.txt:

api
www
account
prod
test
temp

теперь я пытаюсь добавить для каждой строки в to-read.txt слова из to-add.txt, но в начале. например, для api.domain.com тогда я должен получить:

api.api.domain.com
www.api.domain.com
account.api.domain.com
prod.api.domain.com
test.api.domain.com
temp.api.domain.com

и так далее для другого в to-read.txt. Мой код выглядит так:

f = open("results.txt", "w")
with open("to-read.txt", "r") as r, open("to-add.txt", "r") as a:

    for read in r:
        data = read.strip()
        print(data)

    for word in a:
        words = word.strip()
        print(words)



f.close()

Теперь я не знаю, как добавить-добавить с-читать и сохранить его в results.txt

Ответы [ 6 ]

1 голос
/ 02 мая 2020

Ваш код является хорошей отправной точкой - вам просто нужно создать 2 цикла, один из которых перебирает префиксы (из to_add файл ) and another, inner loop, which iterates over the домены for each префикс` и объединяет их.

Попробуйте это:

with open("to-read.txt", "r") as r, open("to-add.txt", "r") as a, open("results.txt", "w") as f:
    domains = r.read().splitlines()
    prefixes = a.read().splitlines()
    for p in prefixes:
        for d in domains:
            f.write(f"{p}.{d}\n")

1 голос
/ 02 мая 2020
results=[]

to_read="""api.domain.com
domain.com
www.domain.com"""

to_add="""api
www
account
prod
test
temp"""

to_add = to_add.split("\n")
to_read= to_read.split("\n")

for domain in to_read:
    for prefix in to_add:
        results.append(prefix+"."+domain)

print(results)

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

0 голосов
/ 02 мая 2020
f = open('read.txt', 'r')
read = f.readlines()
print(read)

f2 = open('add.txt', 'r')
add = f2.readlines()
print(add)
result = []
count = 0
for i in add:
    i = i.strip()
    for j in read:
        j = j.strip()
        result.append(i + '.' + j + '\n')
        count += 1
f3 = open('result.txt', 'w')
f3.writelines(result)
f3.close()

result.txt:

api.api.domain.com
api.domain.com
api.www.domain.com
www.api.domain.com
www.domain.com
www.www.domain.com
account.api.domain.com
account.domain.com
account.www.domain.com
prod.api.domain.com
prod.domain.com
prod.www.domain.com
test.api.domain.com
test.domain.com
test.www.domain.com
temp.api.domain.com
temp.domain.com
temp.www.domain.com
0 голосов
/ 02 мая 2020

Использование:

with open("to-read.txt") as domains,\
        open("to-add.txt") as prefixes,\
        open("results.txt", "w") as output:
    for d in domains:
        for p in prefixes:
            output.write(f"{p.strip()}.{d.strip()}\n")

        prefixes.seek(0)

Содержимое файла results.txt должно выглядеть следующим образом:

api.api.domain.com
www.api.domain.com
account.api.domain.com
prod.api.domain.com
test.api.domain.com
temp.api.domain.com
api.domain.com
www.domain.com
account.domain.com
prod.domain.com
test.domain.com
temp.domain.com
api.www.domain.com
www.www.domain.com
account.www.domain.com
prod.www.domain.com
test.www.domain.com
temp.www.domain.com
0 голосов
/ 02 мая 2020
with open("to-read.txt", "r") as r, \
     open("to-add.txt", "r") as a, \
     open("results.txt", "w") as f:
  data = [ x.strip() for x in r ]
  words = [ x.strip() for x in a ]
  for domain in data:
    for word in words:
      f.write("{}.{}\n".format(word, domain))
0 голосов
/ 02 мая 2020

Вы можете использовать (и нужно заменить to_read и to_add содержимым файла):

to_read = """api.domain.com
domain.com
www.domain.com"""

to_add = """api
www
account
prod
test
temp"""

result = ["{}.{}".format(prefix, domain)
          for domain in to_read.split("\n")
          for prefix in to_add.split("\n")]

print(result)

Это дает

['api.api.domain.com', 'www.api.domain.com', 'account.api.domain.com', 'prod.api.domain.com', 'test.api.domain.com', 'temp.api.domain.com', 'api.domain.com', 'www.domain.com', 'account.domain.com', 'prod.domain.com', 'test.domain.com', 'temp.domain.com', 'api.www.domain.com', 'www.www.domain.com', 'account.www.domain.com', 'prod.www.domain.com', 'test.www.domain.com', 'temp.www.domain.com']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...