簡體   English   中英

解析舊文件時,將腳本文件中的字符串轉換為浮點數

[英]Iterating a conversion of a string to a float in a scripting file when parsing an old file

我正在使用新腳本(a)從舊腳本(b)提取信息以創建新文件(c)。 我正在尋找舊腳本(b)中的等號,並且想要修改修改腳本(a)以使其自動化。

字符串是lev1tolev2'from = e119-b3331l1 mappars =“ simp:180” targ = enceladus.bi.def.3 km = 0.6 lat =(-71.5,90)lon =(220,360)'用python 3編寫。

當前輸出固定在cam2map上,從= e119-b3331l1到= rsmap-x map = enc.Ink.map pixres = mpp defaultrange = MAP res = 300 minlat = -71.5 maxlat = 90 minlon = 220 maxlon = 360

目前,我的代碼能夠為lev1tolev2的所有迭代導出字符串0.6,但是每個迭代都會有所不同。

    cam2map = Call("cam2map")
    cam2map.kwargs["from"] = old_lev1tolev2.kwargs["from"]
    cam2map.kwargs["to"] = "rsmap-x"
    cam2map.kwargs["map"] = "enc.Ink.map"
    cam2map.kwargs["pixres"] = "mpp"
    cam2map.kwargs["defaultrange"] = "MAP"
    **cam2map.kwargs["res"] = float((old_lev1tolev2.kwargs["km"]))**
    cam2map.kwargs["minlat"] = lat[0]
    cam2map.kwargs["maxlat"] = lat[1]
    cam2map.kwargs["minlon"] = lon[0]
    cam2map.kwargs["maxlon"] = lon[1]

我有兩個問題,為什么不將字符串轉換為浮點數? 而且,為什么這不像代碼中的其他所有命令一樣遍歷所有lev1tolev2命令?

完整代碼可在此處獲得。

https://codeshare.io/G6drmk

對我來說似乎還不清楚,但是從您這里的語法:

**cam2map.kwargs["res"] = float((old_lev1tolev2.kwargs["km"]))**

我敢打賭,cam2map.kwargs [“ res”]是一個字典,而您認為它將使用**語法轉換字典中的每個值。 然后,應在dict的元素上循環調用內置的float,或者可能在此處進行列表理解:

cam2map.kwargs["res"] = dict()
for key, value in old_lev1tolev2.kwars["res"].items():
    cam2map.kwargs["res"][key] = float(value)

編輯:好的,看來您是從字符串'from = e119-b3331l1 mappars =“ simp:180” targ = enceladus.bi.def.3 km = 0.6 lat =(-71.5,90)lon =(220,360)'然后以為調用youstring.kwargs會給你一個dict,但是不會,你可以先使用一些lib將其解析為一個dict,或者使用mystring.split('=')然后再處理你的首先是一個命令,像這樣:

output = dict()
for one_bit in lev_1_lev2.split(' '):
    key, value = one_bit.split('=')
    output[key] = value

該問題發生在代碼中的其他位置。 def escape_kw_value(value):

if not isinstance(value, str):
    return value
elif (value.startswith(('"', "'")) and value.endswith(('"', "'"))):
    return value

# TODO escape the quote with \" or \'
#if value.startswith(('"', "'")) or value.endswith(('"', "'")):
#    return value

if " " in value:
    value = '"{}"'.format(value)
return value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM