簡體   English   中英

如何使用python將txt文件導出到csv中?

[英]How to export a txt file into csv with python?

我有這樣格式的txt文件:

Monday, Jul 24
8:45 apple 1    
school
ball
dog
8:50 poirot 2   
rouge
chien   
chat
8:55 football 3
asroma
juventus  
inter

如何忽略第一行(星期一,7月24日)並將這些值放入csv,並在每行中插入實際日期? 我需要這種格式:

A1 Monday, Jul 24
B1:8:45 apple 1   B2:school B3:ball    B4:dog    B5:ACTUALLY DATE
C1:8:50 poirot 2  C2:rouge  C3:chien   C4:chat   C5:ACTUALLY DATE
etcetc..

所以我想以這種格式放置它們。 這是我的實際代碼:

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

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

with open('air.txt', 'r') as f:
    x = f.read()
print x

req_text = x.split('Test')[1: -1]

data = []
for text in req_text:
    text = text.split('\n', 1)[1]
    for line in text.strip().splitlines():
        data.append([line])

#maindatatable = to_2d(data, 4)

with open('output.csv', "wb") as f:
    output = csv.writer(f, delimiter=';',quotechar = '"', quoting=csv.QUOTE_NONNUMERIC, encoding='latin-1')
    output.writerows(data)

f.close()

我嘗試了to_2d(l,n),但是它不起作用,我知道如何在實際日期中達到這種格式? [Python 2.7]

更新的代碼,仍然無法正常工作:

 import urllib2 import unicodecsv as csv import os import sys import io import time import datetime import pandas as pd from bs4 import BeautifulSoup import sys import re def to_2d(l,n): return [l[i:i+n] for i in range(0, len(l), n)] with open('air.txt', 'r') as f: x = f.read() print x req_text = x.split('Load')[1: -1] data = [] for text in req_text: text = text.split('\\n', 1)[1] for line in text.strip().splitlines(): data.append([line]) #maindatatable = to_2d(data, 4) from string import ascii_uppercase as LETTERS with open('air.txt') as f, open('output.csv', 'wb') as g: actual_date = f.readline().strip() while True: first_line = f.readline().strip() if not first_line: break second_line = f.readline().strip() third_line = f.readline().strip() fourth_line = f.readline().strip() the_time, noun, number = first_line.split(' ') number = int(number) letter = LETTERS[number] new_line = '%s1:%s %s %s %s2:%s %s3:%s %s4:%s %s5:%s' % (letter, the_time, noun, number, letter, second_line, letter, third_line, letter, fourth_line, letter, actual_date) print (new_line) f.close() 

該腳本僅打印輸出行,而不是將它們寫入輸出csv文件。 但是,這對您來說很容易修改。 還要注意(a)用這種方式最多可以寫25行,因為從'B'到'Z'只有25個字母; (b)如果您的示例輸出文件中的第一行要寫入到csv文件中,那么這將不是對熊貓的有效輸入。

該腳本通過讀取第一行並將其內容actual_dateactual_date以便在輸出行中使用來工作。 然后,它一次讀取四行,以用於創建單個輸出行。

>>> from string import ascii_uppercase as LETTERS
>>> with open('air.txt') as f, open('output.csv', 'wb') as g:
...     actual_date = f.readline().strip()
...     while True:
...         first_line = f.readline().strip()
...         if not first_line: 
...             break
...         second_line = f.readline().strip()
...         third_line = f.readline().strip()
...         fourth_line = f.readline().strip()
...         try:
...             the_time, noun, number = first_line.split(' ')
...         except:
...             print ('invalid input: ', first_line)
...             quit(2)
...         number = int(number)
...         letter = LETTERS[number]
...         new_line = '%s1:%s %s %s %s2:%s %s3:%s %s4:%s %s5:%s' % (letter, the_time, noun, number, letter, second_line, letter, third_line, letter, fourth_line, letter, actual_date)
...         print (new_line)
...         
B1:8:45 apple 1 B2:school B3:ball B4:dog B5:Monday, Jul 24
C1:8:50 poirot 2 C2:rouge C3:chien C4:chat C5:Monday, Jul 24
D1:8:55 football 3 D2:asroma D3:juventus D4:inter D5:Monday, Jul 24

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM