我撰寫了一個 python 代碼,它生成以下格式的輸出:
m=10 n=15 p=0.3 T=0.45
m=10 n=25 p=0.5 T=0.5
m=15 n=15 p=0.3 T=0.65
m=15 n=25 p=0.5 T=0.66
m=20 n=15 p=0.3 T=0.15
.......
我有大約 1000 行這樣的行。我想以表格格式獲取輸出,以便可以直接將其復制到 excel 檔案的行和列中。請幫忙。
uj5u.com熱心網友回復:
在我看來,處理這種情況的最好方法是使用資料框。這些資料框可以幫助您制作包含列名等的表格。Pandas 可以幫助您,這是最方便使用的庫之一。這是一個快速的偽代碼,希望對您有所幫助。
import pandas as pd
list=[]
list.append(["Your desired result"])
df=pd.Dataframe(list)
pd.to_excel(df)
uj5u.com熱心網友回復:
如果結果不比這大多少,并且它已經由 for 回圈生成,你不??能將列印的 for 回圈結果復制到 Excel,然后按空格分割列嗎?
uj5u.com熱心網友回復:
最簡單的方法是預先初始化一個串列并將每個資料點附加到該串列中:
result = []
for i in range(1, 10):
# ... do your calculations
result.append([i, i*i, i*i*i, 1/i, 1/i/i])
編輯:
我過去有時也會做的是以 html-table 格式寫出表格:
<table>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>4</td><td>5</td><td>6</td></tr>
</table>
通常,直接寫入 Excel 檔案(參見 Batselot 的答案)可能是更好的解決方案。html-trick 允許您將資料粘貼到您喜歡的打開的 Excel 檔案中。
uj5u.com熱心網友回復:
我用python寫了一個簡單的腳本,應該可以完成你的作業。
import sys
print("m,n,p,T")
# read till EOF os stdin
for line in sys.stdin:
splits = line.rstrip().split(" ")
if len(splits) != 4:
continue
vals = [(lambda x: x.split("=")[1])(x) for x in splits]
if len(vals) != 4:
continue
print(f'{vals[0]},{vals[1]},{vals[2]},{vals[3]}')
它將以csv您可以在 excel 或電子表格中加載的格式格式化程式的輸出。
去做這個,
- 將此腳本存盤在類似
script.py - 在 shell 中運行它
$ python <your program>.py | python script.py > output.csv
- 結果將存盤在
output.csv其中
m,n,p,T
10,25,0.5,0.5
15,15,0.3,0.65
15,25,0.5,0.66
20,15,0.3,0.15
這個 csv 可以加載到 excel 中。
uj5u.com熱心網友回復:
我認為正如@Batselot 所說,最好的方法是使用 DataFrames。您可以執行以下兩個程序之一:
1 - 將函式的所有輸出值連接到一個字串中,然后連接到以下代碼,該代碼將處理字串,洗掉'\n'和'':
values = """m=10 n=15 p=0.3 T=0.45
m=10 n=25 p=0.5 T=0.5
m=15 n=15 p=0.3 T=0.65
m=15 n=25 p=0.5 T=0.66
m=20 n=15 p=0.3 T=0.15"""
str_result = values.split('\n')
while '' in str_result:
str_result.remove('')
data = []
for row in str_result:
data.append(row.split(' '))
df = pd.DataFrame(data, columns=['m', 'n', 'p', 'T'])
#If my excel file were called 'excel_file.xlsx' and it is in the same folder of my python code and it had a sheet called 'Sheet1'.
df.to_excel(r"excel_file.xlsx", sheet_name='Sheet1', index=False)
2 - 您可以直接將值附加到回圈內的串列中,而不必使用字串操作來處理它。
data = []
#You Probably have a for loop like this:
for i in 'some list':
print("m={}".format(m), "m={}".format(n), "m={}".format(p), "m={}".format(T))
data.append(["m={}".format(m), "n={}".format(n), "p={}".format(p), "T={}".format(T)])
df = pd.DataFrame(data, columns=['m', 'n', 'p', 'T'])
print(df)
#If my excel file were called 'excel_file.xlsx' and it is in the same folder of my python code and it had a sheet called 'Sheet1'.
df.to_excel(r"excel_file.xlsx", sheet_name='Sheet1', index=False)
注意 1:您的 Excel 表格必須關閉,否則您將收到權限錯誤。
注意 2:如果出現以下錯誤,則必須安裝 openpyxl:
ModuleNotFoundError: No module named ‘openpyxl’
然后,您可以使用 PIP 安裝 openpyxl,如下所示:
pip install openpyxl
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489354.html
