小智 16
要计算字符串开头的空格数,您可以在左侧剥离(删除空白)字符串与原始字符串之间进行比较:
a = " indented string"
leading_spaces = len(a) - len(a.lstrip())
print(leading_spaces)
# >>> 4
Run Code Online (Sandbox Code Playgroud)
选项卡缩进是特定于上下文的......它会根据显示选项卡字符的任何程序的设置而更改.此方法仅告诉您空白字符的总数(每个选项卡将被视为一个字符).
或者说明:
a = "\t\tindented string"
leading_spaces = len(a) - len(a.lstrip())
print(leading_spaces)
# >>> 2
Run Code Online (Sandbox Code Playgroud)
编辑:
如果您想对整个文件执行此操作,您可能需要尝试
with open("myfile.txt") as afile:
line_lengths = [len(line) - len(line.lstrip()) for line in afile]
Run Code Online (Sandbox Code Playgroud)
我认为Gizmo的基本思想是好的,通过使用字符串对象的expandtabs()方法扩展它来处理任何前导标签和空格的混合是相对容易的:
def indentation(s, tabsize=4):
sx = s.expandtabs(tabsize)
return 0 if sx.isspace() else len(sx) - len(sx.lstrip())
print indentation(" tindented string")
print indentation("\t\tindented string")
print indentation(" \t \tindented string")
Run Code Online (Sandbox Code Playgroud)
最后两个打印语句将输出相同的值.
编辑:我修改它以检查并返回0如果遇到所有选项卡和空格的行.