python中的注釋有多種,有單行注釋,多行注釋,批量注釋,中文注釋也是常用的。下面是小編為您整理的關于python注釋符號,希望對你有所幫助。
?
python注釋符號 ?
python中的注釋有多種,有單行注釋,多行注釋,批量注釋,中文注釋也是常用的。python注釋也有自己的規(guī)范,在文章中會介紹到。注釋可以起到一個備注的作用,團隊合作的時候,個人編寫的代碼經常會被多人調用,為了讓別人能更容易理解代碼的通途,使用注釋是非常有效的。 ?
一、python單行注釋符號(#)
井號(#)常被用作單行注釋符號,在代碼中使用#時,它右邊的任何數據都會被忽略,當做是注釋。 ?
print 1 #輸出1
#號右邊的內容在執(zhí)行的時候是不會被輸出的。 ?
二、批量、多行注釋符號
在python中也會有注釋有很多行的時候,這種情況下就需要批量多行注釋符了。多行注釋是用三引號''' '''包含的 ?
python正則表達式的注釋方法 ?
學過正則都知道,那簡直是天書,為了提高正則的可讀性,正則表達式中提供了X(VERBOSE): 詳細模式。這個模式下正則表達式可以是多行,忽略空白字符,并可以加入注釋。 ?
例如: ?
import re ?
str = 'python regex' ?
pattern = re.compile(r''' ?
(w+) # first word ?
s(w+) # second word ?
''', re.X) ?
match = re.match(pattern,str) ?
if match: ?
print "%s %s"%(match.group(2),match.group(1)) ?
其實,由于在python語法里,小括號里面的字符串是可以分行寫,所以我們也可以不用X模式來寫正則表達式的注釋: ?
import re ?
str = 'python regex' ?
pattern = re.compile(r'(w+)' #first word ?
r' (w+)' #second word ?
) ?
match = re.match(pattern,str) ?
if match: ?
print "%s %s"%(match.group(2),match.group(1)) ?
大家可以根據自己的愛好來給自己的正則注釋起來。 ?
用Python將注釋行和空行去掉 ?
比如要將/etc/httpd/conf/httpd.conf的注釋行和空行去掉并且打印,用一行命令就可以做到:
?
egrep -v ‘^#|^$’ /etc/httpd/conf/httpd.conf。但這里練習用Python實現 ?
#!/usr/bin/env python ?
#coding: utf8 ?
import os ?
def dellines(): ?
#os模塊調用linux命令,cp是為了避免alias里面的cp -i,強制復制文件,不詢問是否覆蓋 ?
os.system('cp -r -f /etc/httpd/conf/httpd.conf .') ?
f = file('httpd.conf') ?
linenum = 0 ?
while True: ?
data = f.readline() ?
if data == '': ?
break ?
else: ?
#*個字符為#或者是換行符,就pass,否則就打印這一行 ?
if (data[0] == '#') or (data[0] == 'n'): ?
pass ?
else: ?
linenum += 1 ?
print linenum, data , ?
f.close() ?
if __name__ == '__main__': ?
dellines() ?
Python去掉文件中空行 ?
# coding = utf-8 ?
def clearBlankLine(): ?
file1 = open('text1.txt', 'r', encoding='utf-8') # 要去掉空行的文件 ?
file2 = open('text2.txt', 'w', encoding='utf-8') # 生成沒有空行的文件 ?
try: ?
for line in file1.readlines(): ?
if line == 'n': ?
line = line.strip("n") ?
file2.write(line) ?
finally: ?
file1.close() ?
file2.close() ?
if __name__ == '__main__': ?
clearBlankLine() ?
利用PYTHON的正則表達式去掉代碼中的注釋 ?
校招時,百度二面的時候,讓我寫一個刪除代碼中的注釋的代碼,當時卡殼了。時隔一年多,想起這個問題,現在把這個寫下來。 ?
先說一下代碼的思想,首先將“字符串”進行替換,替換成 uuid ,并且把字符串的內容存起來。_map是作為字典,uuid作為key,字符串內容作為value。 ?
然后再把// 和 /**/ 進行替換 ?
*輸出到文件中 ?
import re ?
import uuid ?
fdr = open("input.c", 'r') ?
fdw = open("output.c", 'w') ?
_map = { } ?
outstring = '' ?
line = fdr.readline() ?
while line: ?
while True: ?
#這里要注意,我用的是re.S 比如print("aaan") ?
m = re.compile('".*"', re.S) ?
_str = m.search( line ) ?
#如果沒匹配成功,就合并,然后下一行 ?
if None == _str: ?
outstring += line ?
break ?
key = str( uuid.uuid1() ) ?
# ?
m = re.compile('".*"', re.S) ?
outtmp = re.sub(m, key, line, 1) ?
line = outtmp ?
_map[ key ] = _str.group(0) ?
line = fdr.readline() ?
m = re.compile(r'//.*') ?
outtmp = re.sub(m, ' ', outstring) ?
outstring = outtmp ?
m = re.compile(r'/*.*?*/', re.S) ?
outtmp = re.sub(m, ' ', outstring) ?
outstring = outtmp ?
for key in _map.keys(): ?
outstring = outstring.replace(key, _map[key]) ?
fdw.write(outstring) ?
fdw.close() ?