Python拆分文本返回str和str列表

时间:2015-07-20 19:04:47

标签: parsing python-3.x text

我想知道是否有人可以帮助我使用语法将我的文本文件拆分为键值对。

Abbasso: termine con cui si indicano gli ambienti situati sotto il ponte di coperta. 
Abbattuta: manovra che consiste nel puggiare sino a fare prendere il vento alle vele sulle mure opposte. 
Abbisciare: (fr.: prendre la biture; ingl.: to coil) stendere un cavo o una catena come fosse una biscia in modo da evitare che si imbrogli successivamente, quando sarà posto in opera. 
Abbordo: (fr.: abordage; ingl.: collision) collisione in mare. Sinonimo, poco usato, di accosto e di abbordaggio. 
Abbrivo: (fr.: erre; ingl.: way-on) inerzia dell'imbarcazione a continuare nel suo movimento anche quando è cessata la spinta propulsiva, sia essa a vela che a motore. 
Abbuono: (fr.: bonification, rating; ingl.: rating) compenso: (o vantaggio) dato ad una imbarcazione per permetterle di gareggiare più equamente: (ad esempio abbuono per anzianità di costruzione dello scafo).

我的分钟函数给了我一个键str,但是一个值类型(列表)。相反,我希望价值也是一个str。我明白了我的问题是什么应该是每个冒号而不是仅在最左边的冒号上分裂。

def create_dict():
   eng_fr_it_dict={}
    f_name = "dizionario_della_vela.txt"

    handle = open(f_name, encoding = 'utf8')
    for line in handle:
        #print(line)
        if line.startswith(" ") : continue
        line.lstrip()
        terms = line.split(": ")
        #print(terms[1:])       
        term = terms[0].lstrip()
        expan = terms[1:]
        print(type(term), type(expan))
        eng_fr_it_dict[term] = eng_fr_it_dict.get(term, expan)

    with open("eng_fr_it_dict.txt", "wb") as infile:
        pickle.dump(eng_fr_it_dict,infile)

    print(eng_fr_it_dict)

你能建议一个更聪明的方法吗?或者我是否必须弄清楚如何将str列表转换为单个str?我认为有一个内置功能拆分,但显然不是

1 个答案:

答案 0 :(得分:2)

file = open("dizionario_della_vela.txt", "r")
data = file.read()
file.close()
data = data.split("\n") # getting every line as seperate list
myDict = {}
for line in data:
    line = line.split(":")
    key = line[0] # getting first element as key
    value = ":".join(line[1:]) # joins elements (starting with second) with 
                               # ":". We need this because previous line 
                               # was splitted by ":" to get your key. This
                               # is where "string" value is produced.
    myDict[key] = value

for key in myDict.keys():
    print(myDict[key])