【问题标题】:Is there a function which will help me split (x) in a string with each split including the (x+1)th value?是否有一个函数可以帮助我将 (x) 拆分为一个字符串,每个拆分都包含第 (x+1) 个值?
【发布时间】:2019-08-12 12:51:37
【问题描述】:

我只是想了解如何将字符串中的值 x(即 x+1)之后的值包含在拆分中。

我尝试了一个 for 循环,只有 for i: splitlist.append(i) 并且最终可以打印 [A, B, C, D, E]。

samplestring = 'ABCDE'
for i in samplestring:
    splitlist = []
    if i+1 == (none):
        break
    else:
        splitlist.append(i,i+1)

我想返回 ['AB', 'BC', 'CD', 'DE'] 但最终在行中出现类型错误;

if i+1 == (none):.

(TypeError: 只能将 str (不是 "int") 连接到 str)

【问题讨论】:

  • 当您在 for 循环中迭代 samplestring 时,i 将获取样本字符串中每个字母的值,并且您不能在字母中加 1。
  • 使用索引循环字符串的长度减一,使用该索引从字符串中获取当前(在索引处)和下一个(索引加一)字符。作为单个字符串附加到列表中。
  • 我认为您可以使用 None 删除整个内容。我不明白你为什么需要它。此外,我认为您的意思是 None 而不是 (none)

标签: python


【解决方案1】:

使用zip 将相邻项目组合在一起:

[f'{x}{y}' for x, y in zip(samplestring, samplestring[1:])]

示例

samplestring = 'ABCDE'

print([f'{x}{y}' for x, y in zip(samplestring, samplestring[1:])])
# ['AB', 'BC', 'CD', 'DE']

【讨论】:

    【解决方案2】:

    有几个问题:

    • 每次迭代都会创建一个空列表
    • 您正在尝试将字符串:i 与整数:1 组合。
    • 您检查字符串是否结束的方式有点奇怪,您知道字符串的长度(使用len(samplestring)),因此您可以指定循环的频率

    要解决此问题,您可以使用:

    samplestring = 'ABCDEF'
    splitlist = []
    for i in range(len(samplestring) - 1):
        splitlist.append(samplestring[i] + samplestring[i+1])
    

    这会导致拆分列表:

    ['AB', 'BC', 'CD', 'DE', 'EF']
    

    【讨论】:

      【解决方案3】:
      print([samplestring[i:i + 2] for i in len(samplestring) - 1])
      

      【讨论】:

        【解决方案4】:

        错误原因 - 您正在添加字符串和整数

        sample = 'ABCDE'
        
        print([sample[i]+sample[i+1] for i in range(0,len(sample)-1)])
        

        【讨论】:

          猜你喜欢
          • 2018-08-22
          • 2023-03-05
          • 1970-01-01
          • 1970-01-01
          • 2019-10-12
          • 2018-02-20
          • 1970-01-01
          • 2011-05-07
          • 2022-01-15
          相关资源
          最近更新 更多