我是 Python 新手,想撰寫一個腳本,將 .txt 檔案作為輸入并將結果輸出到 .csv 檔案。
.txt 檔案如下所示
text:eub1
region:euboea
μενανδρεσεμεεποισε
我想撰寫一個腳本,為上面第三行中的每個 μ 或 ν 實體創建一個新行。我還希望每一行都包含textandregion識別符號。所以結果應該是這樣的:
text,region,letter
eub1,euboea,μ
eub1,euboea,ν
eub1,euboea,μ
我真的不知道從哪里開始編碼,所以我會很感激任何關于如何做到這一點的建議。
uj5u.com熱心網友回復:
嘗試:
import pandas as pd
data = {}
with open("your_file.txt", "r") as f_in:
for line in map(str.strip, f_in):
if line == "":
continue
if line.startswith("text:"):
data["text"] = line.split(":", maxsplit=1)[-1]
elif line.startswith("region:"):
data["region"] = line.split(":", maxsplit=1)[-1]
else:
data["letter"] = [ch for ch in line if ch in "μν"]
df = pd.DataFrame(data)
print(df)
df.to_csv("data.csv", index=False)
印刷:
text region letter
0 eub1 euboea μ
1 eub1 euboea ν
2 eub1 euboea ν
3 eub1 euboea μ
并保存data.csv:
text,region,letter
eub1,euboea,μ
eub1,euboea,ν
eub1,euboea,ν
eub1,euboea,μ
內容your_file.txt:
text:eub1
region:euboea
μενανδρεσεμεεποισε
編輯:要從此檔案加載:
text:eub1
region:euboea
μενανδρεσεμεεποισε
text:eub2
region:xxx
μμμ
text:eub3
region:zzz
abc
你可以試試:
import pandas as pd
data = {}
with open("your_file.txt", "r") as f_in:
for line in map(str.strip, f_in):
if line == "":
continue
if line.startswith("text:"):
data.setdefault("text", []).append(line.split(":", maxsplit=1)[-1])
elif line.startswith("region:"):
data.setdefault("region", []).append(
line.split(":", maxsplit=1)[-1]
)
else:
data.setdefault("letter", []).append(
[ch for ch in line if ch in "μν"]
)
df = pd.DataFrame(data).explode("letter")
print(df)
df.to_csv("data.csv", index=False)
印刷:
text region letter
0 eub1 euboea μ
0 eub1 euboea ν
0 eub1 euboea ν
0 eub1 euboea μ
1 eub2 xxx μ
1 eub2 xxx μ
1 eub2 xxx μ
2 eub3 zzz NaN
并保存data.csv:
text,region,letter
eub1,euboea,μ
eub1,euboea,ν
eub1,euboea,ν
eub1,euboea,μ
eub2,xxx,μ
eub2,xxx,μ
eub2,xxx,μ
eub3,zzz,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/520942.html
上一篇:決議CSV檔案時超時
