私はPythonの文字列が==
本来あるべきだと思うときにそうではないという問題を抱えています。それはエンコード方法に関係していると思います。基本的に、zip アーカイブに保存されているいくつかのコンマ区切りの値を解析します (興味のある方のために、具体的には GTFS フィード)。
PythonでZipFileモジュールを使用して、zipアーカイブの特定のファイルを開き、そこにあるテキストをいくつかの既知の値と比較しています。ファイルの例を次に示します。
agency_id,agency_name,agency_url,agency_phone,agency_timezone,agency_lang
ARLC,Arlington Transit,http://www.arlingtontransit.com,703-228-7433,America/New_York,en
私が使用しているコードは、テキストの最初の行にある文字列 "agency_id" の位置を識別しようとしているため、後続の行で対応する値を使用できます。コードのスニペットを次に示します。
zipped_feed = ZipFile(feed_name, "r")
agency_file = zipped_feed.open("agency.txt", "r")
line_num = 0
agencyline = agency_file.readline()
while agencyline:
if line_num == 0:
# this is the header, all we care about is the agency_id
lineparts = agencyline.split(",")
position = -1
counter = 0
for part in lineparts:
part = part.strip()
if part == "agency_id":
position = counter
counter += 1
line_num += 1
agencyline = agency_file.readline()
else:
.....
このコードは、一部の zip アーカイブでは機能しますが、他の zip アーカイブでは機能しません。私はいくつかの調査を行い、repr(part) を印刷しようとしましたが、'agency_id' の代わりに '\xef\xbb\xbfagency_id' を取得しました。ここで何が起こっているのか、どうすれば修正できるのか誰か知っていますか? 助けてくれてありがとう!