【问题标题】:python split string on whitespacepython在空格上拆分字符串
【发布时间】:2014-02-15 09:53:56
【问题描述】:

我正在尝试将复制/粘贴的文本转换为 csv,然后我可以将其拆分。 问题是其中有我似乎无法摆脱的空白标签

复制/粘贴示例:

Amarr Hybrid Tech Decryptor 12  Decryptors - Hybrid         12 m3
Ancient Coordinates Database    23  Sleeper Components          2.30 m3
Caldari Hybrid Tech Decryptor   17  Decryptors - Hybrid         17 m3
Carbon  17  General         34 m3
Cartesian Temporal Coordinator  4   Ancient Salvage         0.04 m3
Central System Controller   2   Ancient Salvage         0.02 m3

现在我正在尝试得到这样的东西:

Amarr Hybrid Tech Decryptor,12,Decryptors - Hybrid,12,m3,
Ancient Coordinates Database,23,Sleeper Components,2.30,m3,
Caldari Hybrid Tech Decryptor,17,Decryptors - Hybrid,17,m3,
Carbon,17,General,34,m3,
Cartesian Temporal Coordinator,4,Ancient Salvage,0.04,m3,
Central System Controller,2,Ancient Salvage,0.02,m3,

(将始终是每行 5 个分隔符

我一直在尝试以各种方式做到这一点 Split by comma and strip whitespace in Python 但我似乎无法让它工作。

@login_required
def index(request):
    if request.method == "POST":
        form = SellListForm(request.POST)
        if form.is_valid():
            selllist = form.save(commit=False)
            selllist.user = request.user
            string = selllist.sell
            string = [x.strip() for x in string.split(',')] 
            print string
            return HttpResponseRedirect(reverse('processed'))
    else:
        form = SellListForm()
    return render(request, 'index.html', {'form': form})

返回

[u'<<<SULTS STUFF>>>\t\t\tVoucher\t\t\t0 m3\r\nAmarr Hybrid Tech Decryptor\t12\tDecryptors - Hybrid\t\t\t12 m3\r\nAncient Coordinates Database\t23\tSleeper Components\t\t\t2.30 m3\r\nCaldari Hybrid Tech Decryptor\t17\tDecryptors - Hybrid\t\t\t17 m3\r\nCarbon\t17\tGeneral\t\t\t34 m3\r\nCartesian Temporal Coordinator\t4\tAncient Salvage\t\t\t0.04 m3\r\nCentral System Controller\t2\tAncient Salvage\t\t\t0.02 m3']

【问题讨论】:

标签: python string split whitespace


【解决方案1】:

我看到你有时有几个\t。我会使用re 模块正确拆分:

for line in lines:
    linedata = re.split(r'\t+', line)
    print ",".join(linedata)

【讨论】:

  • 带行的意思是复制粘贴的1行? (所以每行处理这个)?
  • 是的,对不起。 line 是您文件的一行。我已将示例修改为更明确
【解决方案2】:

您可以在标签上split:

line = line.split('\t')

除非您特别需要逗号分隔值,否则您可以直接将文本粘贴到文件中,open 它,split 在选项卡上并使用数据而无需引入逗号.

【讨论】:

    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多