【问题标题】:How to split a line by space [.split( )], but keep a specific space如何用空格[.split()]分割一行,但保留一个特定的空格
【发布时间】:2019-03-31 05:19:14
【问题描述】:

我有一个需要拆分的文本文件。通常,我可以使用 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 = {'Qatar': '98,900', 'United States': '95,000',... '福克兰群岛(马尔维纳斯群岛)': '55,400'}

【问题讨论】:

  • 你的文字总是这样吗?索引、名称、货币、金额?
  • 考虑正则表达式,否则你将很难过!
  • 有没有更多空格的值?
  • 美元符号之前的所有内容都将是键,而后面的所有内容都是值,这是否正确?
  • 1.使用 line.split(" ", 1) 按第一个空格拆分 2. 通过子字符串“$”拆分生成的第二部分。这应该返回 ['United States', '95000'] 可以转换为字典

标签: python


【解决方案1】:
$ dict((line.split(" ", 1)[1].split(" $ "),))
{'United States': '95,000'}

或将其添加到现有字典mydict

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

【讨论】:

    【解决方案2】:

    您可以将“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']
    

    【讨论】:

      【解决方案3】:

      如果你的文本文件中的行总是包含四个项目索引、国家、货币符号和金额,你可以这样做:

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

      【讨论】:

        猜你喜欢
        • 2016-03-29
        • 1970-01-01
        • 2018-10-23
        • 2015-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多