簡體   English   中英

如何在 Python csv writer 中將單引號替換為雙引號?

[英]How to replace a single quote to double quote in Python csv writer?

我一直在嘗試使用 python 輸出一個 csv 文件。 它在沒有引號和數字的情況下工作正常。 例子:

代碼:

for n in G:
    centrality = nx.degree_centrality(G)
    betweeness = nx.betweenness_centrality(G)
    edges = nx.edges(G, n)
    csv_out.writerow([n, str(edges).replace("'",""), round(centrality[n],2), round(betweeness[n],2)])

輸出:

24,"[(24, 31), (24, 64)]",0.02,0.04
25,"[(25, 77)]",0.01,0.0
26,"[(26, 49)]",0.01,0.0
27,"[(27, 75), (27, 79)]",0.02,0.02
20,"[(20, 9), (20, 84), (20, 40)]",0.03,0.03
21,"[(21, 77), (21, 64)]",0.02,0.02

我還需要能夠輸入字符串數據。 例子:

Automation Specialist I,"[(Automation Specialist I, Data Coordiator)]",0.01,0.0
Community Outreach Specialist,"[(Community Outreach Specialist, Librarian)]",0.01,0.0
Research Assistant III,"[(Research Assistant III, Senior Quality Engineer)]",0.01,0.0
Cost Accountant,"[(Cost Accountant, Structural Engineer)]",0.01,0.0
Data Coordiator,"[(Data Coordiator, Technical Writer), (Data Coordiator, Automation Specialist I)]",0.02,0.01

但是我需要一個引用的值才能在前端處理它。 像這樣:

Automation Specialist I,"[("Automation Specialist I", "Data Coordiator")]",0.01,0.0
Community Outreach Specialist,"[("Community Outreach Specialist", "Librarian")]",0.01,0.0
Research Assistant III,"[("Research Assistant III", "Senior Quality Engineer")]",0.01,0.0
Cost Accountant,"[("Cost Accountant", "Structural Engineer")]",0.01,0.0
Data Coordiator,"[("Data Coordiator", "Technical Writer"), ("Data Coordiator", "Automation Specialist I")]",0.02,0.01

所以我使用了下面的代碼:

csv_out.writerow([n, str(edges).replace("'",'"'), round(centrality[n],2), round(betweeness[n],2)])

然而,結果是這樣的:

對於數字:

24,"[(""24"", ""31""), (""24"", ""64"")]",0.02,0.04
25,"[(""25"", ""77"")]",0.01,0.0
26,"[(""26"", ""49"")]",0.01,0.0

對於字符串:

Automation Specialist I,"[(""Automation Specialist I"", ""Data Coordiator"")]",0.01,0.0
Community Outreach Specialist,"[(""Community Outreach Specialist"", ""Librarian")]"",0.01,0.0

我還嘗試用撇號替換 out 引號(列表之外),但沒有成功。 我也嘗試使用下面的代碼,但它給出了與上面相同的結果。

str(edges).replace("'",'"').replace('""','"')

我該怎么做才能得到我想要的結果? 我計划在之后過濾輸入的類型,以便僅當是字符串時才應用該技術。 因為如果它是一個數字,那么理想的輸出就是第一個例子。 當我使用最后一個時,我的前端代碼處理文本和數字。 但是當我使用第一個示例時,它不適用於文本,僅適用於數字。

你能幫我嗎? 如何將撇號替換為引號? 非常感謝。

嘗試用反斜杠轉義雙引號。 例如

str(edges).replace("'","\"")

我最終使用了以下代碼:

if(is_number(n) == True):
    edges_w = str(edges).replace("'","")
else:
    edges_w = str(edges).replace("'",'"')

我使用了一個函數來檢查它是否是一個數字,然后根據這個函數的返回值替換了 str 。 我已經考慮過@Stein 評論來使用這個解決方案。

暫無
暫無

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

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