2014-01-24 141 views
6

我想将复制/粘贴的文本转换为csv,我可以拆分后。 问题是有它的空白标签,我似乎无法摆脱python拆分字符串上的空白

例的复制/粘贴:

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'] 
+1

请在这里发布代码。 – aIKid

+1

可能重复[如何在Python中分割一个字符串与未知数量的空格作为分隔符?](http://stackoverflow.com/questions/4309684/how-in-python-to-split-a-string-with-未知数的空格作为分隔符) – tripleee

+0

答案是使用不带参数的分割,因为此网站上的多个早期问题显示为 – Mawg

回答

8

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

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

使用行代表1行复制粘贴? (所以每行处理这个)? –

+0

是的,对不起。 'line'是你文件的一行。我修改了这个例子,使其更加明确 –

2

您可以split上标签:

line = line.split('\t') 

除非你特别需要逗号分隔值,你可以粘贴文本直接进入文件,open it,split在标签上使用而没有引入逗号。