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



我有一个文本文件需要拆分。通常,我可以使用 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'}

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

或者将其添加到现有字典mydict

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

您可以将"美国"视为专有名词,并在拆分字符串之前将每个专有名词转换为一个整体:

>>> 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']

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

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

最新更新