【问题标题】:Python 2.7: How to split on first occurrence?Python 2.7:如何在第一次出现时拆分?
【发布时间】:2018-02-13 15:28:05
【问题描述】:

我正在尝试拆分第一次出现逗号时提取的字符串。我尝试过使用split,但出现了问题,因为它没有分裂。

for i in range(len(items)):
    alldata = items[i].getText().encode('utf-8').split(',', 1)
    csvfile.writerow(alldata)

变量 items 包含我从 URL 中提取的数据。 CSV 文件中的输出放在一列中。我希望它位于两列。我在 CSV 文件中获得的数据示例 (alldata) 如下所示:

['\n\n\n1958\n\n\nGeorge Lees\n']

以该数据为例,我需要将年份 1958 放在一列中,并将名称 George Lees 放在另一列而不是新行上。

编辑 忘了提我的逗号是什么意思。我提到逗号的原因是我也尝试过分割空格。当我这样做时,我得到了数据:

['1958', 'George', 'Lees']

所以我试图实现的是在第一个逗号出现时拆分数据。这就是为什么我做了split(',', 1) 忘记了我还需要在空格上进行拆分。所以我的问题是我不知道我是如何在第一个逗号出现时拆分的,所以年份在 oe 列上,而整个名称在另一列上。我得到了

    ['\n\n\n1958\n\n\nGeorge Lees\n']

当我试图与split(',', 1)分开时

【问题讨论】:

  • ...但是该数据没有任何逗号。
  • 这听起来像是 XY 问题。询问您的实际问题,而不是您认为正确的解决方案。
  • 另外,为什么你的 CSV 文件有这么多换行符?
  • 我的错,已经编辑了 OP
  • 你不能用逗号分割,因为你的数据没有。拆分空格后输出中的逗号不在您的数据中。这是一个数组(列表),它已经被拆分了。

标签: python python-2.7 csv


【解决方案1】:

您可以使用 strip 删除开头和结尾的所有空格,然后使用 split by "\n" 来获得所需的输出。我还使用了 filter 方法来删​​除任何空字符串或值。

例如:

A = ['\n\n\n1958\n\n\nGeorge Lees\n']
print filter(None, A[0].strip().split("\n"))

输出:

['1958', 'George Lees']

【讨论】:

    猜你喜欢
    • 2011-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多