簡體   English   中英

如何在python中將“n”行數轉換為.csv?

[英]How to convert "n" number of lines into .csv in python?

數據集(提取 2 個單獨的項目, n為每個項目 6 列):

1
No. of A
600
No. of B
2
No. of C

6
No. of A
500
No. of B
4
No. of C

...

使用 Python,將上述內容轉換並輸出到看起來像這樣的 .csv 的最佳方法是什么?

1,No. of A,600,No. of B,2,No. of C
6,No. of A,500,No. of B,4,No. of C
...

欣賞所有建議!


修改答案

body = """
1
No. of A
600
No. of B
2
No. of C
6
No. of A
500
No. of B
4
No. of C
7
No. of A
501
No. of B
5
No. of C
"""

temp_body = body.strip().split("\n")
parsed_body = [temp_body[(0 + i - 6):i] for i in range(6, len(temp_body) + 1, 6)]                                  

import pandas as pd

df =  pd.DataFrame(parsed_body)

df.to_csv('output.csv', sep=',', header=None, index=None)


結果

在此處輸入圖片說明

假設您的數據一致且干凈,您可以在雙換行符處拆分數據。 然后為每個項目用逗號替換換行符:

data = '''1
No. of A
600
No. of B
2
No. of C

6
No. of A
500
No. of B
4
No. of C'''

items = [item.replace('\n', ',') for item in data.split('\n\n')]
print('\n'.join(items))
# 1,No. of A,600,No. of B,2,No. of C
# 6,No. of A,500,No. of B,4,No. of C

假設\\n\\n分隔了 2 個不同的行,那么您可以像這樣嘗試:

 In [1]: body = """ 
    ...: 1 
    ...: No. of A 
    ...: 600 
    ...: No. of B 
    ...: 2 
    ...: No. of C 
    ...:  
    ...: 6 
    ...: No. of A 
    ...: 500 
    ...: No. of B 
    ...: 4 
    ...: No. of C 
    ...: """                                                                                                                

 In [2]: parsed_body = [i.strip().split("\n") for i in body.split("\n\n")]                                                  

 In [3]: parsed_body                                                                                                        
 Out[4]: 
 [['1', 'No. of A', '600', 'No. of B', '2', 'No. of C'],
  ['6', 'No. of A', '500', 'No. of B', '4', 'No. of C']]

獲得列表后,您可以使用 Python 中的 csv 模塊使用 csvwriter 並將其寫為 csv

如果 \\n\\n 不是我們的情況並且它是連續的,那么你可以嘗試這樣的事情(有點像黑客,但也許你可以想出更好的辦法):

In [43]: body = """ 
    ...: 1 
    ...: No. of A 
    ...: 600 
    ...: No. of B 
    ...: 2 
    ...: No. of C 
    ...: 6 
    ...: No. of A 
    ...: 500 
    ...: No. of B 
    ...: 4 
    ...: No. of C 
    ...: 22 
    ...: No. of Q 
    ...: 500 
    ...: No. of R 
    ...: 4 
    ...: No. of S 
    ...: """                                                                                                                

In [44]: temp_body = body.strip().split("\n")                                                                               

In [45]: parsed_body = [temp_body[(0 + i - 6):i] for i in range(6, len(temp_body) + 1, 6)]                                  

In [46]: parsed_body                                                                                                        
Out[46]: 
[['1', 'No. of A', '600', 'No. of B', '2', 'No. of C'],
 ['6', 'No. of A', '500', 'No. of B', '4', 'No. of C'],
 ['22', 'No. of Q', '500', 'No. of R', '4', 'No. of S']]

暫無
暫無

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

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