如何按空格[.split()]分割行,但保留特定的空格

时间:2019-03-31 05:19:14

标签: python

我有一个文本文件,需要分割。通常,我可以使用line.split()将行的各个部分用空白隔开。但是,在这种情况下,我需要的一部分字符串包含一个空格,分割时需要忽略该空格。

文本文件看起来像这样:

1个卡塔尔$ 98,900

2美元$ 95,000

3卢森堡$ 80,600

4百慕大$ 69,900

5新加坡$ 59,700

6球衣$ 57,000

7福克兰群岛(马尔维纳斯岛)$ 55,400

我需要将每个国家都视为一个“组成部分”。但是,当然,当我使用line.split()分隔符时,python希望在每个空格处进行拆分。

我如何才能将多词的国名(例如“美国”和“福克兰群岛(马尔维纳斯群岛)”)作为一个整体?

我尝试了简单的line.split()方法。我还寻找了一些方法来删除行开头的数字(使用.lstrip或其他内容),然后用“ $”符号将行分开(我还需要收集美元值作为另一部分),但是在这方面没有运气。

for line in file:
    part = line.split()

希望能够使用'part'变量来收集国家名称及其与'part [1]'和'part [3]'相对应的值,并将它们输入到字典中作为相应的键,价值对。因此,最终输出将如下所示:

dict = {'卡塔尔':'98,900','美国':'95,000',...'福克兰群岛(马尔维纳斯岛)':'55,400'}

3 个答案:

答案 0 :(得分:1)

$ dict((line.split(" ", 1)[1].split(" $ "),))
{'United States': '95,000'}

或将其添加到现有字典mydict

mydict.update(dict((line.split(" ", 1)[1].split(" $ "),)))

答案 1 :(得分:0)

您可以将'United States'视为专有名词,并在分割字符串之前将每个专有名词转换为一个整体:

>>> convert={'United States': 'UnitedStates'}
>>> text = '1 United States $ 95,000'
>>> text = text.replace('United States',convert['United States'])
>>> text
'1 UnitedStates $ 95,000'

在拆分完成后恢复它们:

>>> recover = {v: k for k, v in convert.items()}
>>> parts = [recover.get(i, i) for i in text.split()]
>>> parts
['1', 'United States', '$', '95,000']

答案 2 :(得分:0)

如果文本文件中的行始终由索引,国家/地区,货币符号和金额四个项目组成,则可以执行以下操作:

for line in file:
    left, curr, value = line.rsplit(' ', 2)
    country = left.split(' ', 1)[1]

    # print(country, ': ', value)
# United States :  95000