繁体   English   中英

Python用句号替换缩进

[英]Python replace indentation with period

我试图用句点替换文件中的缩进,但是我的脚本正在替换缩进行中的所有空格,而不仅仅是缩进。

lines = [line.strip('\n') for line in open('test0.py', 'r')]   #create line array
for l in lines:
    #print l
    data = l
    while data.startswith(" "):
        data=data.replace(data[0], ".")  #replace start of line with "."
    print data

这是脚本错误输出的内容

import SimpleHTTPServer
import BaseHTTPServer
import ssl

class MyRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
....def.do_GET(self):
........if.self.path.==.'/':
............self.path.=.'test.html'
........return.SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

Handler = MyRequestHandler
server = BaseHTTPServer.HTTPServer(('192.168.2.3', 8080), Handler)
server.socket = ssl.wrap_socket(server.socket, certfile='server.pem', server_side=True)
server.serve_forever()

我正在尝试不让缩进线中的其余空格单独留下。

对不起,想不出一个聪明的解决方案,那怎么办:

rhs = data.lstrip()
print '.' * (len(data) - len(rhs)) + rhs

(了解最高性能在这里可能并不十分重要)

import re


PATTERN = re.compile(r"^( +)", re.MULTILINE)


with open("test0.py") as file:
    content = file.read()

content = PATTERN.sub(lambda m: "."*len(m.group(1)), content)
print(content)

您在while循环中的行错误地用冒号替换了所有空格。

更改

data=data.replace(data[0], ".")

至:

data="."+data[1:]

尝试:

data.replace("\t", ".")

它将用点替换所有列表化的行业。 如果点数不够,则制表符的缩进长度始终相同,因此您可以在替换调用中增加点数:

data.replace("\t", ".......")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM