[英]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.