2014-01-08 35 views
1

我想盡可能簡單地修復我的CSV文件的案例問題。如果簡化了代碼,我已經導入了熊貓。CSVs,Python中的字符串大小寫操作

所以我想替換

Name   City   State 
FOO BAR  los angeles  ca 
guy's naME PHILADELPHIA Pa 

隨着(注意「)

Name   City   State 
Foo Bar  Los Angeles  CA 
Guy's Name Philadelpha  PA 
+0

而不會有人要告訴我,我的問題放什麼,以確保正確的語法高亮的表? – Xodarap777

回答

2

這是硬編碼,以匹配您的示例文件,但應該做你想做的事:

import csv 
import sys 
import string 

reader = csv.reader(sys.stdin, delimiter='\t') 
writer = csv.writer(sys.stdout, delimiter='\t') 

# write the header as-is 
writer.writerow(reader.next()) 

for row in reader: 
    row[0] = string.capwords(row[0]) 
    row[1] = string.capwords(row[1]) 
    row[2] = row[2].upper() 
    writer.writerow(row) 

用法示例:

cat test.csv | python fix_case.csv 
Name City State 
Foo Bar Los Angeles CA 
Guy's Name Philadelphia PA 
+0

適合我想要的東西。我只需要了解如何將字符串操作應用於數據框/系列,但我想這和字符串一樣簡單。對於行[0] - 行[0] .capwords()應該一次解決幾個問題,我希望! – Xodarap777

+0

我編輯我的答案,根據您的建議使用capwords,這解決了我錯過了在Guy's Name中大寫's'的問題。謝謝! –

0

首先,你需要學習一些Python的規則 然後,您必須安裝IPython中,並用它來代替python。 然後,你必須運行ipython,並嘗試一些真正的基本問題。

讀取CSV文件數據框對象(谷歌,或學習) 然後,如果你想大寫字母系列(州):

s1 = pd.core.series.Series(['foo', 'bar']) 
s1 = s1.apply(lambda x: x.upper()) 
s1 

然後,如果你想爲小寫和大寫系列(市)

s2 = pd.core.series.Series(['FOO', 'fOo']) 
s2 = s2.apply(lambda x: x.lower().capitalize()) 
s2 

如果你想大寫每個單詞,你必須爲它的谷歌。

然後你必須爲你保存csv文件與你新改變的DataFrame。

+0

「Google或學習」是一種適用於所有論壇的通用態度,尤其是問答式論壇。但是,我明顯在這裏有一個原因。 「投票下降需要125點聲望。」 – Xodarap777

1

這會做你想要什麼減去與特殊字符的所有資本的狀態和情況下,像(傢伙的名字):

with open("output.txt",'w') as O: 
    with open("input.txt") as I: 
     for line in I: 
      O.write(line.title()) 

前:

Name   City   State 
FOO BAR  los angeles  ca 
guy's naME PHILADELPHIA Pa 

後:

Name   City   State 
Foo Bar  Los Angeles  Ca 
Guy'S Name Philadelphia Pa