Aus*_*tin 10 python whitespace spaces tabstop
我正在尝试编写一个python函数,不使用任何带有选项卡的字符串的模块,并用适合输入的tabstop大小的空格替换选项卡.它不能只用n个空格替换所有size-n标签,因为标签可以是1到n个空格.我真的很困惑,所以如果有人能指出我正确的方向,我会非常感激.
例如,如果tabstop最初为4:
123\t123 = 123 123 #one space in between
Run Code Online (Sandbox Code Playgroud)
但改为tabstop 5:
123\t123 = 123 123 #two spaces in between
Run Code Online (Sandbox Code Playgroud)
我想我需要用空格填充字符串的结尾,直到字符串%n == 0然后将其打包,但此刻我很丢失..
对于制表符长度为5:
>>> s = "123\t123"
>>> print ''.join('%-5s' % item for item in s.split('\t'))
123 123
>>>
Run Code Online (Sandbox Code Playgroud)
既然你不想要一个不使用任何外部模块的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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19141 次 |
| 最近记录: |