Python字典映射无法按预期运行

时间:2019-05-17 17:53:41

标签: python regex python-3.x

所以我有一个包含以下内容的文本文件。

<lang:Foreign> <lang:foreign>
</lang:Foreign> </lang:foreign>
<lang: Foreign> <lang:foreign>
</lang: Foreign> </lang:foreign>

我的程序要做的是将行中的第一个文本映射到第二个。因此在字典中看起来像这样。

{<lang:Foreign> : <lang:foreign>}
flist = [line.split() for line in f]
for k, v in flist:
    fdict.update({k: v})

我的映射代码在上面。但是问题是条目的最后两行

<lang: Foreign> <lang:foreign>
</lang: Foreign> </lang:foreign>

第一个条目之间有空格,我的代码将lang:和Foreign分开。但我想指定第一个条目包含一个空格。我尝试做以下

<lang:\sForeign> <lang:foreign>
</lang:\sForeign> </lang:foreign>

有什么主意可以告诉我的程序接受此空间并正确映射它吗?谢谢!

4 个答案:

答案 0 :(得分:0)

只需使用不同的split参数。这应该为您工作:

line.split(' <')

答案 1 :(得分:0)

我建议使用正则表达式。使用以下模式匹配将为您提供每行用'<>'括起来的匹配模式的列表。

    import re

    pattern = re.compile(r'<.*?>')
    flist = pattern.findall(line) # sample output of flist = ['<lang:Foreign>', '<lang:foreign>']
    if len(flist) == 2:
        fdict.update({flist[0]: flist[1]})

答案 2 :(得分:0)

我建议您分割“> <”,然后将“>”和“ <”添加回数组的第一和第二个元素。 像这样...

SQL

答案 3 :(得分:0)

在这里使用正则表达式可能最有意义。

Step 14/14 : RUN /etc/init.d/mysql status
 ---> Running in 7701598d1eff
MySQL Community Server 5.7.25 is not running.