【问题标题】:How to append a integer iteration into a string in python?如何将整数迭代附加到python中的字符串中?
【发布时间】:2019-03-01 04:26:02
【问题描述】:

所以这是我的问题:

首先我迭代

for i in range(1,21):
    print (i)

那么我有一个变量 basename="站"

我想要一个输出为 Station_1.txt、Station_2.txt 等的结果。

我设法将“_”添加到变量 basename 中,例如

mylist1 = ("_")
s = (basename)
for item in mylist1:
    s += item

但是现在我遇到了如何在变量 basename 之上进行迭代的问题,我可以得到它自己的“Station_,1,Station_,2”,但不在字符串本身内。

对不起,这里是初学者:)

【问题讨论】:

    标签: python for-loop append


    【解决方案1】:

    如果可能,最好避免字符串连接。另一种方法是 Python 现在通过前缀 f 支持格式字符串,这可用于解决您的问题,如下所示:

    base_string = 'Station'
    
    for i in range(1, 21):
        print(f'{base_string}_{i}.txt')    
    

    这是在 Python 3.6 中添加的。对字符串进行零填充也很有用,这将确保字符串正确排序:

    base_string = 'Station'
    
    for i in range(1, 21):
        print(f'{base_string}_{i:02}.txt')
    

    这会给你:

    Station_01.txt
    Station_02.txt
    Station_03.txt
    Station_04.txt
    Station_05.txt
    Station_06.txt
    Station_07.txt
    Station_08.txt
    Station_09.txt
    Station_10.txt
    Station_11.txt
    Station_12.txt
    Station_13.txt
    Station_14.txt
    Station_15.txt
    Station_16.txt
    Station_17.txt
    Station_18.txt
    Station_19.txt
    Station_20.txt
    

    【讨论】:

      【解决方案2】:

      您可以在一行中完成此操作!请尝试以下操作:

      basename = "Station"
      result = ["{}_{}.txt".format(basename, i) for i in range(1, 21)]
      print(result)`
      
       >> ['Station_1.txt','Station_2.txt','Station_3.txt', 
           'Station_4.txt','Station_5.txt','Station_6.txt', 
           'Station_7.txt','Station_8.txt','Station_9.txt', 
           'Station_10.txt','Station_11.txt',Station_12.txt',
           'Station_13.txt','Station_14.txt','Station_15.txt',
           'Station_16.txt','Station_17.txt','Station_18.txt',
           'Station_19.txt','Station_20.txt']`
      

      【讨论】:

        【解决方案3】:

        您可以使用字符串格式来忘记担心整数

        您仍然使用数字作为参数循环并保持基本名称相同:

        base = 'Station'
        for i in range(1, 21):
            name = '{}_{}.txt'.format(base, i)
            print(name)  # or do whatever with 'name'
        

        【讨论】:

          【解决方案4】:

          我会使用.format()。见https://docs.python.org/3.3/library/stdtypes.html#str.format

          例如:

          base_string = 'Station'
          for i in range(1,21):
              print('{}_{}.txt'.format(base_string, i))
          

          【讨论】:

          【解决方案5】:

          你想要这样的东西吗?

          basename = "Station"
          for i in range(1, 21):
              value = basename + "_" + str(i) + ".txt"
              print(value)
          

          输出:

          Station_1.txt
          Station_2.txt
          Station_3.txt
          Station_4.txt
          Station_5.txt
          Station_6.txt
          Station_7.txt
          Station_8.txt
          Station_9.txt
          Station_10.txt
          Station_11.txt
          Station_12.txt
          Station_13.txt
          Station_14.txt
          Station_15.txt
          Station_16.txt
          Station_17.txt
          Station_18.txt
          Station_19.txt
          Station_20.txt
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-12-03
            • 2010-10-13
            • 1970-01-01
            • 2012-04-14
            • 1970-01-01
            • 2018-06-24
            • 2019-02-13
            • 2013-10-16
            相关资源
            最近更新 更多