【问题标题】:How to export txt to csv in a correct form with Python 2.7?如何使用 Python 2.7 以正确的形式将 txt 导出到 csv?
【发布时间】:2017-07-21 08:39:26
【问题描述】:

我试图将一个文本文件转换为 csv,但它的书写格式非常糟糕。这是我的 txt 部分:

8:40 AM LH1334  
Frankfurt (FRA)
Lufthansa   A320 (D-AIPP)   
Landed 8:40 AM

没有“;”只是它们之间的空间。 当我使用我的代码时,我得到了这个:

A1 cell:    "8:40 AM	LH1334	
A2 cell    "	"Frankfurt (FRA)
A3 cell    "	"Lufthansa	A320 (D-AIPP)	
A4 cell    "	Landed 8:40 AM

但我想像这样分开(A1 单元格到 A6,在这 4 行之后,新数据从 B1 单元格开始到 B6):

A1      A2      A3        A4                    A5              A6
8:40 AM LH1334  Frankfurt (FRA)Lufthansa    A320 (D-AIPP)   Landed 8:40 AM

我必须如何修复我的代码?

import urllib2
import unicodecsv as csv
import os
import sys
import io
import time
import datetime
import pandas as pd
from bs4 import BeautifulSoup

def to_2d(l,n):
    return [l[i:i+n] for i in range(0, len(l), n)]

f = open('proba.txt', 'r')
x = f.read()

filename=r'output.csv'

resultcsv=open(filename,"wb")
output=csv.writer(resultcsv, delimiter=' ',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1')

maindatatable = to_2d(x, 6)
print maindatatable
output.writerows(maindatatable)

resultcsv.close()

【问题讨论】:

  • 您好,您能解释一下您面临的问题吗? (如果发生,粘贴当前结果 VS 预期的一个 OR 错误)
  • 我明白了:“8:40 AM LH1334”“法兰克福(FRA)”“汉莎航空 A320(D-AIPP)”上午 8:40 降落,我想把它分成 6 列,比如我在我的问题的示例中写道。
  • 请将其添加到您的问题中,人们不喜欢挖掘 cmets :)
  • 我已添加到我的问题中!

标签: python csv text


【解决方案1】:

您的情况下的分隔符是newline,例如\r\n\n

您可以改用 x = f.readlines()。这将返回一个包含行的列表,每个条目都以newline 字符结尾。可以使用字符串的 .strip() 方法删除它们,例如

a = 'mystring\r\n'.strip()

所以请阅读以下内容:

x = f.readlines()

# could use a list comprehension here
x_clean = [k.strip() for k in x]

然后将条目连接到单个字符串

y = ' '.join(x_clean)

如果你想使用csv.writer,代码略有不同。

【讨论】:

  • 如果我使用 x=f.readlines() 我得到这个:A1 单元格中的 8:40 AMLH1334,我想将其分隔为 A1 单元格 = 8:40 AM; A2 单元 = LH1334
  • 那么你需要单独处理这个问题,使用类似 'xyz 123'.split(' ') 将该条目拆分为列表 ['xyz', '123'] 并附加条目手动到另一个列表。
【解决方案2】:

你可以:

with open('f.csv', 'w') as f:
    f.write(', '.join(lines))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 2017-07-14
    相关资源
    最近更新 更多