adding another answer, which will points out the bug in your code
接下來的**if (line[0:6] == '#name ') or line[0:6] == '#date ':
print line
if isinfile(line, file2) == true:
copy = true
data += line
在這裡,您將檢查您的行是否以"#name "或{}開頭,並使用行和file2作為引數呼叫isinfile()方法。在
這是第乙個問題,在您的例子中,只傳送一行以"#name "開頭的行是沒有用的。在
如果當前行以"#date "開頭,則將前一行和檔案作為引數傳送到此方法。在
第二個問題是isinfile()定義,實際上它什麼也不做。在
^$您只需要檢查file1和file2中的兩行是否相同,如果是,則在sysout中寫入這一行。
因此,您的程式將只列印file1和file2之間的公共行。
修改後的**應該如下所示:def isinfile(l, f):
line_found = false
required_line = null
with open(f, 'r') as f2:
for line in f2:
if line_found:
required_line = line
break
elif l == line:
line_found = true
return (line_found, required_line)
def similitudes(file1, file2):
same = 0
data = ''
copy = false
previous_line = null
with open(file1, 'r') as f1:
for line in f1:
if copy == true:
data += line
if line == '\n' or line[0:6] != '#name ':
copy = false
if (line[0:6] == '#name '):
print line
previous_line = line
elif line[0:6] == '#date ':
print line
file2_line_info = isinfile(previous_line, file2)
if file2_line_info[0] == true:
copy = true
data += file2_line_info[1]
print "true"
return data
def main(ar**=2):
print (sys.ar**[1])
print (sys.ar**[2])
if ar** == 2:
out = open('final.txt', 'w')
data = (
similitudes(sys.ar**[1], sys.ar**[2]) + '\n'
out.write(data)
out.close()
else:
print ("this program need 2 files")
exit (0)
return 0
if __name__ == '__main__':
status = main()
sys.exit(status)
注意:這不是python式的做事方式。正如我在上面的答案中提到的使用「re」模組並有效地解決問題。
劍指offer 表示數值的字串 python
題目描述 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e2 123 3.1416 和 1e 16 都表示數值。但是 12e 1a3.14 1.2.3 5 和 12e 4.3 都不是。coding utf 8 class solution s字串 defisnumer...
Python中拼接最大字元(初學python)
輸入兩個長度相等的字串,將兩字串中相同索引中較大的字元組成乙個新的字串並輸出,使用 ascii 碼來比較字元大小。string1 input string2 input even 空列表用來儲存拼接後的字元 a 0 for i in range len string1 1 空列表中新增元素if or...
python字串表示及常用函式
python字串處理,專欄總目錄 1.python字串格式化 2.python字元編碼 3.python字串常用函式 字串是以單引號 或雙引號 括起來的任意文字,比如 abc xyz 等等。請注意,或 本身只是一種表示方式,不是字串的一部分,因此,字串 abc 只有a,b,c這3個字元。如果 本身也...