我正在尝试编写一个不使用任何模块的python函数,该模块将使用具有制表符的字符串,并将制表符替换为适合输入的制表符大小的空格。但是,它不能仅将所有大小为n的制表符替换为n个空格,因为制表符可能是1到n个空格。我真的很困惑,所以如果有人能指出我正确的方向,我将不胜感激。

例如,
如果tabstop最初是4号尺寸:

123\t123 = 123 123 #one space in between

但更改为Tabstop 5:
123\t123 = 123  123 #two spaces in between

我想我需要在字符串的末尾用空格填充,直到string%n == 0,然后将其分块,但此刻我迷路了。

最佳答案

由于您不需要使用任何外部模块的python函数,因此我认为您应该首先设计函数的算法...

我建议对字符串的每个字符进行迭代;如果char i是一个制表符,则需要计算要插入多少空格:下一个“对齐”索引是((i/tabstop)+1)* tabstop。因此,您需要插入((i/tabstop)+1)* tabstop-(i%tabstop)。但是更简单的方法是插入制表符,直到您对齐为止(即i%tabstop == 0)

def replace_tab(s, tabstop = 4):
  result = str()
  for c in s:
    if c == '\t':
      while (len(result) % tabstop != 0):
        result += ' ';
    else:
      result += c
  return result

关于python - 如何根据字符串的大小替换字符串中的自定义标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16052862/

10-10 00:25