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