【问题标题】:Python append line of strings to other line of stringsPython将字符串行附加到其他字符串行
【发布时间】:2023-03-22 05:46:01
【问题描述】:

我是 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()

现在我不知道如何使用 to-read 附加 to-add 并将其保存到 results.txt

【问题讨论】:

    标签: python list io concatenation


    【解决方案1】:
    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()
    

    结果.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
    

    【讨论】:

      【解决方案2】:

      用途:

      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
      

      【讨论】:

        【解决方案3】:

        您的代码是一个很好的起点 - 您只需要创建 2 个循环,其中一个循环遍历前缀(来自 to_add file) and another, inner loop, which iterates over thedomainsfor eachprefix` 并将它们连接起来。

        试试这个:

        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")
        
        

        【讨论】:

          【解决方案4】:
          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)
          

          这只是遍历列表,将它们相加,然后将生成的域放入列表结果中。

          【讨论】:

            【解决方案5】:
            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))
            

            【讨论】:

            • 如果您解释了您提供的代码如何回答问题,这将是一个更好的答案。
            【解决方案6】:

            您可以使用(并且需要将to_readto_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']
            

            【讨论】:

              猜你喜欢
              • 2012-07-23
              • 1970-01-01
              • 2015-08-15
              • 1970-01-01
              • 2016-05-01
              • 2019-02-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多