我对python很陌生(2天),所以请原谅我。我试图将yaml从文件readCsv.py发送到getData。yml文件。我认为一切都很好,但我正在从readCsv.py发送到getdata . html的导出yaml周围引用。为什么?
这就是奇迹发生的地方,readCsv.py:
import csv
import pandas
import yaml
""" Reading whole csv file with panda library """
df = pandas.read_csv('chord-progressions.csv')
""" Read in csv, but easy read with pandas """
""" print(df) """
""" Convert csv to yml """
text = yaml.dump(
df.to_dict(orient='records'),
sort_keys=False, width=72, indent=4)
print(text)
""" Export the recently converted yml to getData.yml """
with open('getData.yml', 'w') as outfile:
yaml.dump(text, outfile, default_flow_style=False)
我的getData中的输出。yml文件:
"- 1st chord: 4n 2nd chord: 1n 3rd chord: 5n 4th chord: Alternativen
Progression: .nann- 1st chord: 4n 2nd chord: 1n 3rd chord: 5n
4th chord: Catchyn Progression: .nann- 1st chord: 1n 2nd chord: 1n
3rd chord: 1n 4th chord: Didgeridoon Progression: .nann- 1st chord:
6n 2nd chord: 4n 3rd chord: 5n 4th chord: Dreadfuln Progression:
.nann- 1st chord: 6n 2nd chord: 2n 3rd chord: 5n 4th chord: Dreadfuln
Progression: .nann- 1st chord: 6n 2nd chord: 2n 3rd chord: 4n
4th chord: Endlessn Progression: .nann- 1st chord: 3n 2nd chord:
4n 3rd chord: 6n 4th chord: Energeticn Progression: .nann- 1st
chord: 5n 2nd chord: 1n 3rd chord: 4n 4th chord: Folkn Progression:
.nann- 1st chord: 6n 2nd chord: 1n 3rd chord: 4n 4th chord: Folkn
Progression: .nann- 1st chord: 5n 2nd chord: 4n 3rd chord: 3n
4th chord: Flamencon Progression: .nann- 1st chord: 5n 2nd chord:
6n 3rd chord: 5n 4th chord: Flamencon Progression: .nann- 1st chord:
4n 2nd chord: 3n 3rd chord: 6n 4th chord: Grungen Progression:
.nann- 1st chord: 5n 2nd chord: 1n 3rd chord: 6n 4th chord: Jazzn
Progression: .nann- 1st chord: 4n 2nd chord: 5n 3rd chord: 4n
4th chord: Loven Progression: .nann- 1st chord: 4n 2nd chord: 1n
3rd chord: 5n 4th chord: Memoriesn Progression: .nann- 1st chord:
5n 2nd chord: 6n 3rd chord: 4n 4th chord: Popn Progression: .nann
- 1st chord: 6n 2nd chord: 3n 3rd chord: 7n 4th chord: Popn Progression:
.nann- 1st chord: 1n 2nd chord: 4n 3rd chord: 5n 4th chord: Rebelliousn
Progression: .nann- 1st chord: 4n 2nd chord: 5n 3rd chord: 5n
4th chord: Sadn Progression: .nann- 1st chord: 5n 2nd chord: 4n
3rd chord: 4n 4th chord: Sadn Progression: .nann- 1st chord: 4n
2nd chord: 5n 3rd chord: 4n 4th chord: Sadn Progression: .nann
- 1st chord: 4n 2nd chord: 1n 3rd chord: 1n 4th chord: Sweetn
Progression: .nann- 1st chord: 4n 2nd chord: 1n 3rd chord: 4n 4th
chord: Simplen Progression: .nann- 1st chord: 5n 2nd chord: 5n
3rd chord: 1n 4th chord: Simplen Progression: .nann- 1st chord: 4n
2nd chord: 1n 3rd chord: 4n 4th chord: Wildsiden Progression: .nann
- 1st chord: 1n 2nd chord: 4n 3rd chord: 6n 4th chord: Wistfuln
Progression: .nann- 1st chord: 1n 2nd chord: 5n 3rd chord: 7n
4th chord: Moodyn Progression: .nann- 1st chord: 1n 2nd chord: 7n
3rd chord: 6n 4th chord: Moodyn Progression: .nann"
这里发生的事情是,您两次转储您的yaml
。首先,在这一行:
""" Convert csv to yml """
text = yaml.dump(
df.to_dict(orient='records'),
sort_keys=False, width=72, indent=4)
此时,text
是一个字符串,包含您的yaml
值。
然后,再次转储,在这里:
""" Export the recently converted yml to getData.yml """
with open('getData.yml', 'w') as outfile:
yaml.dump(text, outfile, default_flow_style=False)
因为你要转储的只是一个字符串,它会在你的文件中显示为一个字符串。您可以直接将字符串写入文件:
with open('getData.yml', 'w') as outfile:
outfile.write(text)
或者,您可以直接将csv转储到yaml中,如下所示:
with open('getData.yml', 'w') as outfile:
yaml.dump(
df.to_dict(orient='records'), outfile,
sort_keys=False, width=72, indent=4, default_flow_style=False)
text
已经是YAML;你不需要第二次编码。
with open('getData.yml', 'w') as outfile:
print(text, file=outfile)
或
with open('getData.yml', 'w') as outfile:
yaml.dump(
df.to_dict(orient='records'),
outfile,
sort_keys=False,
width=72,
indent=4
)