技術討論區 > Python程式設計討論區

判斷中文字串是否在 List 裡面

(1/1)

iopklmm:
請問一下

這個程式是讓使用者在命令列輸入兩個檔案,然後將這兩個檔案相同的部分印在螢幕上,但是突然發現如果這兩個檔案是英文內容可以成功,但是中文內容會失敗

我試過將檔案用UTF-8格式儲存 , 開檔也有使用 encoding=UTF-8 但是還是不行
跑出來的結果都是沒有共同行


--- 代碼: ---import sys
f1 = open(sys.argv[1],"r",encoding="UTF-8")
f1_content = f1.readlines()

f2 = open(sys.argv[2],"r",encoding="UTF-8")
f2_content = f2.readlines()

for line in f1_content:
if line in f2_content:
print(line,end="")

f1.close()
f2.close()   

--- 程式碼結尾 ---

檔案1
蘋果
香蕉
鳳梨

檔案2
香蕉
奇異果

Yamaka:

--- 引述: iopklmm 於 2013-10-05 10:35 ---請問一下

這個程式是讓使用者在命令列輸入兩個檔案,然後將這兩個檔案相同的部分印在螢幕上,但是突然發現如果這兩個檔案是英文內容可以成功,但是中文內容會失敗

我試過將檔案用UTF-8格式儲存 , 開檔也有使用 encoding=UTF-8 但是還是不行
跑出來的結果都是沒有共同行


--- 代碼: ---import sys
f1 = open(sys.argv[1],"r",encoding="UTF-8")
f1_content = f1.readlines()

f2 = open(sys.argv[2],"r",encoding="UTF-8")
f2_content = f2.readlines()

for line in f1_content:
if line in f2_content:
print(line,end="")

f1.close()
f2.close()   

--- 程式碼結尾 ---

檔案1
蘋果
香蕉
鳳梨

檔案2
香蕉
奇異果

--- 引用結尾 ---

系統環境是什麼?
下面是我跑出來的結果,環境是 ubunttu 10.04 x64


--- 引用 ---$ cat file1.txt file2.txt
蘋果
香蕉
鳳梨

香蕉
奇異果
$ cat scripts/prog03.py
#!/usr/bin/env python

import sys
f1 = open(sys.argv[1],"r")
f1_content = f1.readlines()

f2 = open(sys.argv[2],"r")
f2_content = f2.readlines()

for line in f1_content:
   if line in f2_content:
      print(line)

f1.close()
f2.close()
$ scripts/prog03.py file1.txt file2.txt
香蕉

$
--- 引用結尾 ---

iopklmm:
竟然有結果! 我的是 windows 8 但是還是不可以...

Yamaka:

--- 引述: iopklmm 於 2013-10-05 14:14 ---竟然有結果! 我的是 windows 8 但是還是不可以...

--- 引用結尾 ---

應該是系統字元編碼的問題
我沒 win8,所以在 xp + python 3.1 試
在程式碼最開頭加一行


--- 代碼: ---# -*- coding: cp950 -*-
--- 程式碼結尾 ---

然後 utf-8 編碼都改成一般 ascii 存檔
『encoding="UTF-8"』刪除
這樣應該就有結果顯示出來了

iopklmm:

恩 成功了

結果不必用 UTF-8 ....

導覽

[0] 文章列表

前往完整版本