如何將文本讀取為字串而不是整數?
latstart = content.find("Latitude=")
latend = content.find("Latitude=",latstart 1)
longstart = content.find("Longitude=",start)
longend = content.find(",",longstart)
這些行應該以文本形式讀取資料,但我得到的只是這些數字(分別)......
5639
-1
5664
8795
檔案中的原始資料...
[SimVars.0]
Latitude=N21° 20' 47.36"
Longitude=W157° 27' 23.20"
怎么了?謝謝。
uj5u.com熱心網友回復:
這是一種方法來做我相信你在你的問題中嘗試的方法:
content='''
[SimVars.0]
Latitude=N21° 20' 47.36"
Longitude=W157° 27' 23.20"
'''
latKey = "Latitude="
longKey = "Longitude="
try:
latstart = content.index(latKey) len(latKey)
latend = content.find('"', latstart) 1
longstart = content.find(longKey, latend) len(longKey)
longend = content.find('"', longstart) 1
except (ValueError):
print("couldn't find latitude and longitude")
print(f'latstart {latstart}')
print(f'latend {latend}')
print(f'longstart {longstart}')
print(f'longend {longend}')
lat = content[latstart:latend]
long = content[longstart:longend]
print()
print(f'lat {lat}')
print(f'long {long}')
輸出:
latstart 22
latend 37
longstart 48
longend 64
lat N21° 20' 47.36"
long W157° 27' 23.20"
評論你的問題:
find()python內置資料型別的方法str如果找到則回傳第一個引數的位置,如果沒有找到則回傳-1。要獲取文本,您需要lat = content[latstart:latend]在使用find()setlatstart和之后執行類似操作latend。
的index()方法str是在成功場景中做同樣事情的替代方法find(),但在失敗場景中會引發ValueError例外(而不是回傳 -1)。如果您使用try/catch上面代碼中的塊捕獲此例外,則可以省去檢查對 for -1 的各個呼叫的回傳值的麻煩find(),并消除除錯代碼時的一些猜測。
更新:
鑒于您使用的是 python 2.7 版,為了回應 OP 的print()引發例外的評論,讓我簡化代碼,看看我們是否可以為您提供在您的環境中作業的東西:
from __future__ import print_function
content='''
[SimVars.0]
Latitude=N21° 20' 47.36"
Longitude=W157° 27' 23.20"
'''
latKey = "Latitude="
longKey = "Longitude="
latstart = content.index(latKey) len(latKey)
latend = content.find('"', latstart) 1
longstart = content.find(longKey, latend) len(longKey)
longend = content.find('"', longstart) 1
print('latstart ', latstart)
print('latend ', latend)
print('longstart ', longstart)
print('longend ', longend)
lat = content[latstart:latend]
long = content[longstart:longend]
print()
print('lat ', lat)
print('long ', long)
輸出:
latstart 22
latend 37
longstart 48
longend 64
lat N21° 20' 47.36"
long W157° 27' 23.20"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/486369.html
下一篇:gsed用帶單引號的變數$i替換
