【问题标题】:Replace every '$' in a Long String with a number from 1 to 165 confusion?用 1 到 165 混淆的数字替换长字符串中的每个“$”?
【发布时间】:2025-12-29 04:50:12
【问题描述】:

我的目标: 我有一个很长的 str 看起来像这样:

longStr = '<option value = $>A/D/S (Pre-ADST)</option><option value = $>Aiwa</option><option value = $>Alphard Audio</option><option value = $>Alphasonik</option><option value = $>Alpine</option><option value = $>Altec Lansing</option><option value = $>Alumapro</option><option value = $>American Bass</option><option value = $>American HiFi</option>........'

等等.. 它是用于选择音频品牌的 html,并且“选项值”应该取一个从 1 到任何值的数字,因此最终它的结尾看起来像:

longStr = '<option value = "1">A/D/S (Pre-ADST)</option><option value = "2">Aiwa</option><option value = "3">Alphard Audio</option><option value = "4">Alphasonik</option><option value = "5">Alpine</option><option value = "6">Altec Lansing</option><option value = "7">Alumapro</option><option value = "9">American Bass</option><option value = "10">American HiFi</option>........' 

再次,依此类推。

所以我开始用 $ 替换所有“#”,这样我就可以再次循环遍历字符串,现在用 1 -165 的数字替换每个 $(例如循环直到第一个 $ 并替换用“1”,继续直到下一个“$”,然后用“2”替换它等等。我已经尝试了一切,但我无法解决正确的结果。任何帮助将不胜感激!!谢谢提前。

【问题讨论】:

    标签: python function loops methods


    【解决方案1】:

    您可以在“$”上拆分字符串并在遍历列表时填写值。然后结合str.join

    longStr = '<option value = $>A/D/S (Pre-ADST)</option><option value = $>Aiwa</option><option value = $>Alphard Audio</option><option value = $>Alphasonik</option><option value = $>Alpine</option><option value = $>Altec Lansing</option><option value = $>Alumapro</option><option value = $>American Bass</option><option value = $>American HiFi</option>........'
    
    x = ''.join(f'{v}"{i+1}"' for i, v in enumerate(longStr.split('$')))
    print(x)
    

    【讨论】:

      【解决方案2】:

      Alec 的答案很理想,但是如果您想要一个更简单的答案:

      您可以使用for循环遍历字符串中的每个字符,并检查它是否为“$”。然后,您可以使用 str.replace(old,new,count) 替换它。

      代码实现如下:

      longStr = '<option value = $>A/D/S (Pre-ADST)</option><option value = $>Aiwa</option><option value = $>Alphard Audio</option><option value = $>Alphasonik</option><option value = $>Alpine</option><option value = $>Altec Lansing</option><option value = $>Alumapro</option><option value = $>American Bass</option><option value = $>American HiFi</option>........'
      count = 0
      for i in longStr:
          if i == "$":
              count += 1
              replace = "\""+ str(count) + "\""
              longStr = longStr.replace('$',str(count),1)
      print(longStr)
      
      

      对不起,之前弄错了。

      【讨论】:

      • 我看到了,我很感激!!您的解决方案也可以完美运行。