パイプを含むtxtファイルがある|残念ながら私はいくつかのエラーが発生しましたが、csv DictReaderは列のカンマが実際にはn列のn値であることを前提としていました。私は他の区切り文字でcsvにテキストを分割するが、各列にカンマを維持する
skipinitialspace = Trueの
パラメータを試してみましたが、それはうまくいきませんでした。
My txtファイル "test.csv";
Name|Company|Age|Gender|Fav Color|Fav Food
John|Custom Inc|23|Male|Red, Blue, Yellow|Chocolate
Mary|Troopers , Inc|25|Female|Black|Chocolate
Riki|Dorw Technology|33|Male|White, Yellow, Black|Ice cream, pudding
マイコード:
import csv
name= []
company = []
age = []
gender = []
fav_color = []
fav_food = []
with open("test.csv", "rU") as f:
reader = csv.Dictreader(f, delimiter = '|')
for row in reader:
name.append(row['Name'])
company.append(row['Company'])
age.append(row['Age'])
gender.append(row['Gender'])
fav_color.append(row['Fav Color'])
fav_food.append(row['Fav Food'])
RESULT_ADD = [[] for _ in range(len(name))]
for attr in range(len(name)):
RESULT_ADD[attr].append(name[attr])
RESULT_ADD[attr].append(company[attr])
RESULT_ADD[attr].append(age[attr])
RESULT_ADD[attr].append(gender[attr])
RESULT_ADD[attr].append(fav_color[attr])
RESULT_ADD[attr].append(fav_food[attr])
with open("result.csv", "w") as newfile:
header = ['NAME_OF_CEO', 'NAME_OF_COMPANY' , 'AGE', 'GENDER', 'FAV_COLOR', 'FAV_FOOD']
wr.csv.writer(newfile, delimiter= ';', quoting = csv.QUOTE_MINIMAL)
wr.writerow(header)
for item in RESULT_ADD:
wr.writerow(item)
私は何を手に入れました。
NAME_OF_CEO;NAME_OF_COMPANY;AGE;GENDER;FAV_COLOR;FAV_FOOD
John;Custom Inc;23;Male;Red,Blue,Yellow;Chocolate
Mary;T,r,o,o,p,e,r,s,,, ,I,n,c;25;Female;Black;Chocolate
Riki;Dorw Technology;33;Male;White,Yellow,Black;Ice cream,pudding
ここでの最初の問題は、ヨハネ
FAV_FOODは「ブルー」が含まれている間、FAV_COLORは、「赤」が含まれており、次の無名の欄には、「イエロー」と次の空の無名の欄にある「バナナ」と同じが含まれています。
LibreOfficeで開くとき、Mary、T、r、o、o、p、e、r、s ,,,,, I、n、cの場合、「Troopers」という語句はNAME_OF_THE_COMPANYにありますが、 「ジョン・
あなたはcompany.appendを(変更してみましたか'? – imran
@imran申し訳ありませんが、編集されました。 – yunaranyancat
Python 2.7とPython 3.6でコードをテストしましたが、出力を再現できません。 ';'文字で区切られた適切な数の列を持つ新しいファイルを取得します。ここに貼り付けたコードが間違った出力を引き起こすことは確かですか? – Craig