代码之家  ›  专栏  ›  技术社区  ›  Samir Tendulkar

Python如何从打印中删除最后一个逗号(string,end=,)

  •  2
  • Samir Tendulkar  · 技术社区  · 7 年前

    我的forloop输出是

    string = ""
    for x in something:
       #some operation
       string =  x += string 
    
    print(string)
    
    5
    66
    777
    

    我使用下面的代码将它们放在同一行上

    print(string, end=", ")
    

    然后我得到

    5, 66, 777,
    

    我希望最后的结果是

     5, 66, 777
    

    如何更改代码 print(string, end=", ") 所以没有 , 最后

    1 2,3, 45, 98798, 45

    print(string[:-1], end=", ")                   #result = , 6, 77, 
    print((string, end=", ")[:-1])                 #SyntaxError: invalid syntax  
    print((string, end=", ").replace(", $", ""))   #SyntaxError: invalid syntax  
    print(", ".join([str(x) for x in string]))     # way off result 5
                                                                    6, 6
                                                                        7, 7, 7
        print(string, end=", "[:-1])                  #result 5,66,777,(I thought this will work but no change to result)
       print(*string, sep=', ')                          #result 5
                                                                 6, 6
                                                                 7, 7, 7 
    

    user input
    twenty five, four, nine 
    

    得到

    25, 4, 9, #(that stupid comma in the end)
    
    4 回复  |  直到 7 年前
        1
  •  8
  •   Joshua R.    7 年前

    您可以在for循环中构建字符串列表,并使用 join :

    strings = []
    
    for ...:
       # some work to generate string
       strings.append(sting)
    
    print(', '.join(strings))
    

    或者 something 有一个明确的长度(即你可以 len(something)

    for i, x in enumerate(something):
       #some operation to generate string
    
       if i < len(something) - 1:
          print(string, end=', ')
       else:
          print(string)
    

    基于实例代码更新:

    value = input("")
    string = ""
    for unit_value in value.split(", "):
        if unit_value.split(' ', 1)[0] == "negative":
            neg_value = unit_value.split(' ', 1)[1]
            string = "-" + str(challenge1(neg_value.lower()))
        else:
            string = str(challenge1(unit_value.lower()))
    
        print(string, end=", ")
    

    根据上面的第一个建议,我得到:

    value = input("")
    string = ""
    strings = []
    for unit_value in value.split(", "):
        if unit_value.split(' ', 1)[0] == "negative":
            neg_value = unit_value.split(' ', 1)[1]
            string = "-" + str(challenge1(neg_value.lower()))
        else:
            string = str(challenge1(unit_value.lower()))
    
        strings.append(string)
    
    print(', '.join(strings))
    
        2
  •  4
  •   jpp    7 年前

    如果您可以首先构造一个字符串列表,那么就可以在中使用序列解包 print 使用 sep end :

    strings = ['5', '66', '777']
    
    print(*strings, sep=', ')
    
    5, 66, 777
    
        3
  •  0
  •   Ville Laitila    7 年前

    如果for循环也在执行打印以外的操作,那么可以使用此方法维护当前的结构。

     strings = ['5', '66', '777']
    
     for i in range(len(strings)-1):
          # some operation
    
          print(strings[i], end=', ')
    
     # some operation (last time)
     print(strings[-1])
    

    5, 66, 777

        4
  •  0
  •   blueheart    7 年前
    l = [5, 66, 777]
    print('{0}, {1}, {2}'.format(*l))
    
        5
  •  0
  •   danish    5 年前

    new_list = []
    [ new_list.append(f'({i}*{i+5})') for i in list_1 ] 
    print(*new_list,sep="+") 
    

    (5*10)+(10*15)+(15*20)+(20*25)
    
        6
  •  -1
  •   Vishal Kadam    5 年前
    for i in range(1,100):
        print (i,end="+")
        
    print("100")
    

    #1+2+3+3+4+5+5+5+5+6+6+7+8+8+8+9+10+10+11+12+15+15+15+16+17+18+18+18+19+20+20+21+22+22+23+24+24+24++3+3+3+3+3+3+3+3+3+3+3+3+3+3+5+15+15+15+15+15+15+16+16+17+17+17+18+18+18+18+18+19+19+20+20+20+20+20+20+20+20+20+20+20+21+20+22+22+22+22+23+23+24+24+24+24+24+24+24+24+24+24+24+24+24+24+25+25+25+25+25+25+25+25+25+25+25+25+25+25+25+26+95+96+97+98+99+100

    最后没有+符号