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