प्रौद्योगिकी साझेदारी

python—csv सञ्चिकाः पठन्तु लिखन्तु च

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

सामग्रीसूची

csv पुस्तकालय विधि पैरामीटर्स

दत्तांशं पठन्तु

csv.पाठक विधि

सञ्चिका निर्दिष्टा पङ्क्तिः अथवा स्तम्भदत्तांशपठनक्रिया

txt file readlines, पठनविधयः

csv.DictReader विधि

data input

txt file write, writelines इति

csv.लेखक विधि

csv.DictWriter विधि

पठन-लेखन-सङ्घः (दत्तांशं परिवर्त्य सम्मिलितं कुर्वन्तु)


csv सञ्चिकानां पठने लेखने च प्रायः भवद्भिः सञ्चिकामार्गः, उद्घाटनविधिः, वर्णसङ्केतनम् इत्यादीनां विषयाणां निवारणं कर्तव्यम् । प्रायः csv सञ्चिकानां पठने लेखने च newline='' पैरामीटर् उपयुज्यते यत् सञ्चिकायाः ​​पठनं लेखनं च Windows प्रणाल्याः newline वर्णेन प्रभावितं न भविष्यति इति सुनिश्चितं भवति txt सञ्चिकाः csv सञ्चिकाः च परस्पररूपान्तरणस्य समर्थनं कुर्वन्ति, अतः txt सञ्चिकानां पठनं लेखनं च csv सञ्चिकासु पूर्णतया प्रयोज्यम् अस्ति ।

csv पुस्तकालय विधि पैरामीटर्स

पैरामीटर्पूर्वनिर्धारितं मूल्यम्वर्णेतु
परिसीमक,एतत् CSV सञ्चिकायां मूल्यानि (अथवा क्षेत्राणि) पृथक् कर्तुं प्रयुक्तानि वर्णाः निर्दिशति ।
skipinitialspaceअसत्य सीमांकनानां अनुसरणं कृत्वा रिक्तस्थानानां व्याख्या कथं भवति इति नियन्त्रयति । यदि True तर्हि आरम्भिकं श्वेतस्थानं निष्कासितम् भविष्यति ।
lineterminatorर्ण्रेखायाः समाप्त्यर्थं प्रयुक्तानां वर्णानाम् क्रमं निर्दिशति ।
quotechar इति" एतत् एकं स्ट्रिंग् निर्दिशति यस्य उपयोगः मूल्यस्य सन्दर्भार्थं भविष्यति यदि क्षेत्रे विशेषवर्णाः (यथा सीमांककाः) भवन्ति । यथा, "0,0" इत्यत्र ","" इत्यस्य सन्दर्भे "" इत्यस्मिन् दत्तांशस्य समग्ररूपेण व्यवहारं कर्तुं quotechar=""" इत्यस्य उपयोगं कर्तुं शक्नोति यदि भवान् '0,0' इत्यस्य उपयोगं करोति तर्हि quotechar="'" इत्यस्य उपयोगं कर्तुं शक्नोति ।
उद्धृत्यcsv.QUOTE_NONE इतियदा उद्धरणं लेखकेन उत्पद्यते अथवा पाठकेन ज्ञायते तदा नियन्त्रयति (अन्यविकल्पानां कृते उपरि पश्यन्तु) ।
पलायनचरन कश्चित्यदा उद्धरणं उद्धरणं प्रति सेट् भवति तदा एतत् एकवर्णीयं तारं भवति यस्य उपयोगः परिसीमकस्य पलायनार्थं भवति ।
द्विगुण उद्धरणसत्यम्‌क्षेत्राणाम् अन्तः उद्धरणानाम् निबन्धनं नियन्त्रयति ।कदासत्यम्‌ पठने क्रमिकौ उद्धरणद्वयं एकं इति व्याख्यायते, लेखनकाले तु दत्तांशेषु निहितं प्रत्येकं उद्धरणवर्णं द्वौ उद्धरणौ इति लिख्यते पूर्वनिर्धारितरूपेण, doublequote True इति सेट् भवति । फलतः द्वौ क्रमिकौ द्विगुणौ उद्धरणौ पठने एकरूपेण व्याख्यातः । यदि doublequote False इति सेट् भवति तर्हि आउटपुट् मध्ये क्रमशः double quotes दृश्यन्ते ।

दत्तांशं पठन्तु

csv.पाठक विधि

  1. import csv
  2. with open(file_name, 'r', encoding='utf-8-sig') as f:
  3. reader = csv.reader(f) # 创建csv阅读器对象,读取所有有效数据,返回结果为一个迭代器类对象
  4. for data in reader: # 遍历每一行的数据
  5. print(data)

एन्कोडिंग् एन्कोडिंग् प्रारूपं utf-8-sig इति निर्दिष्टुं शक्नोति, यत् स्वयमेव BOM वर्णानाम् संसाधनं कर्तुं शक्नोति तथा च ufeff इत्यस्य घटनां समाप्तुं शक्नोति ।

सञ्चिका निर्दिष्टा पङ्क्तिः अथवा स्तम्भदत्तांशपठनक्रिया
  1. with open(file_name, 'r', encoding='utf-8-sig') as f:
  2. reader = csv.reader(f)
  3. list_csv = list(reader)
  4. for i in range(len(list_csv)-5,len(list_csv)): # 如读取后5行数据
  5. print(list_csv[i])
  6. print(list_csv[i][:3]) # 读取指定列数据

txt file readlines, पठनविधयः

txt सञ्चिकानां readlines() तथा read() इति पठनविधिनाम् उपयोगं कुर्वन्तु, पठितदत्तांशेषु नूतनपङ्क्तयः सन्ति येषां संसाधनं करणीयम् ।csv पुस्तकालयस्य आयातस्य आवश्यकता नास्ति

  1. with open(file_name, 'r', encoding='utf-8-sig') as f:
  2. reader_lines = f.readlines() # 读取所有行放在一个列表中
  3. for da in reader_lines: # 也可以使用range方法读取指定行的数据,读取结果中有换行符需要处理
  4. print(da.replace('n',''))
  5. reader = f.read()
  6. print(reader)

csv.DictReader विधि

शब्दकोशरूपेण दत्तांशं पठन्तु, मुद्रितं दत्तांशं च शब्दकोशस्य कील-मूल्ययुग्मरूपेण भवति ।

  1. with open(file_name,'r', encoding='utf-8-sig',newline='') as f:
  2. reader =csv.DictReader(f)
  3. for r in reader:
  4. print(r)

data input

txt file write, writelines इति

csv पुस्तकालयस्य आयातस्य आवश्यकता नास्ति

दत्तांशलेखनार्थं txt सञ्चिकायाः ​​write तथा writelines इत्यस्य उपयोगं कुर्वन्तु तस्य उपयोगं कुर्वन् वर्णस्य आङ्ग्लविरामः क्षैतिजट्याब् वर्णट्याब् इति ज्ञायते, तथा च newline वर्णः रेखावेष्टनार्थं ऊर्ध्वाधरट्याब् वर्णप्रवेशः इति ज्ञायते यदि भवान् रिक्तपङ्क्तिं सम्मिलितुं इच्छति तर्हि दत्तांशमापदण्डस्य कृते नूतनपङ्क्तिवर्णस्य उपयोगं कुर्वन्तु यदि भवान् रिक्तकोष्ठकं लिखितुम् इच्छति तर्हि दत्तांशमापदण्डस्य कृते अल्पविरामस्य उपयोगं कुर्वन्तु ।

  1. with open(file_name, 'w', newline='') as f:
  2. f.write('测试写入数据操作n')
  3. f.write('n')
  4. f.writelines(["角色管理,测试测试", "账号管理n", "部门管理n"])

  

csv.लेखक विधि

दत्तांशलेखनकाले एकं चरं स्वीकुर्वन्तु यत् एकं पारयोग्यं वस्तु भवितुम् अर्हति यथा स्ट्रिंग्, सूची, ट्युपल्, सेट्, शब्दकोशः इत्यादयः [स्ट्रिंग् प्रत्येकं वर्णं पृथक् कोष्ठकेषु पूरयिष्यति, शब्दकोशाः च पारं कृत्वा कीलं लिखिष्यन्ति writerow इत्यस्य उपयोगः एकपङ्क्तिदत्तांशलेखनार्थं भवति तथा च writerow इत्यस्य उपयोगः दत्तांशस्य बहुपङ्क्तिलेखनार्थं भवति ।

  1. with open(file_name, 'w', newline='') as f:
  2. ws = csv.writer(f) # 创建一个写入文件对象
  3. ws.writerow([]) # 列表内容为空,插入的是一个空行
  4. ws.writerow(["设备实时监控", "设备数据列表", "设备报警分析"]) # 列表数据
  5. ws.writerow(("角色管理", "账号管理", "部门管理")) # 元组数据
  6. write_data = ['贾史王薛',
  7. ['贾不假,白玉为堂金作马', '阿房宫,三百里,住不下金陵一个史', '东海缺少白玉床,龙王请来金陵王',
  8. '丰年好大雪,珍珠如土金如铁'], ('cao', 'xue', 'qin', 'shu'), {'曹', '雪', '芹', '书'},
  9. {'贾': '宝玉', '史': '湘云', '王': '熙凤', '薛': '宝钗'},
  10. {'贾': '宝玉', '史': '湘云', '王': '熙凤', '薛': '宝钗'}.values()]
  11. ws.writerows(write_data) # writerows写入多行数据

csv.DictWriter विधि

दत्तांशलेखनकाले DictWriter इत्यनेन निर्धारयितुं आवश्यकं यत् कुञ्जी शब्दकोशस्य आधारेण क्षेत्रनामसु अस्ति वा यदि सा नास्ति तर्हि यदि भवान् सर्वाणि ज्ञातानि अज्ञातानि च शब्दकोशदत्तांशं योजयितुं प्रवृत्ताः भविष्यन्ति लिखितव्यस्य दत्तांशस्य कीलानि, ततः मूलसञ्चिकाशीर्षकेण सह तुलनां कुर्वन्तु (मूलसञ्चिकाशीर्षकं पठन्तु), शीर्षकसूचौ योजयन्तु ततः दत्तांशं लिखन्तु ।

  1. fieldnames = ['姓氏', '人物', '说明'] # 表头
  2. dictate = [{'姓氏': '贾', '人物': "宝玉"}, {'姓氏': '史', '人物': "湘云"}, {'姓氏': '王', '人物': "熙凤"},
  3. {'姓氏': '薛', '人物': "宝钗"}]
  4. with open(file_name, 'w', newline='') as f:
  5. write = csv.DictWriter(f, fieldnames=fieldnames, delimiter=',')
  6. write.writeheader() # 写入表头
  7. write.writerow({'姓氏': '贾', '人物': "宝玉"}) # 单行模式写入
  8. write.writerows(dictate) # 多行模式写入

पठन-लेखन-सङ्घः (दत्तांशं परिवर्त्य सम्मिलितं कुर्वन्तु)

सिद्धान्तः - प्रथमं मूलसञ्चिकादत्तांशं पठन्तु, सूचीभण्डारणस्थाने स्थानान्तरयन्तु, ततः प्राप्तसूचिकायाः ​​आधारेण योजयितुं, विलोपयितुं अन्यक्रियाः च कर्तुं सूचीविधिं उपयुज्यन्ते, अन्ते च बहुपङ्क्तिलेखनस्य उपयोगेन परिवर्तितं सूचीदत्तांशं सञ्चिकायां लिखन्तु

  1. # 第一步:读取数据
  2. with open(file_name, 'r+', newline='') as f:
  3. file_csv_data = list(csv.reader(f))
  4. # 第二步:操作数据
  5. # 插入数据
  6. file_csv_data.insert(2, '贾史王薛') # 在某行插入一行数据,如在第3行插入数据
  7. file_csv_data[2].insert(0, '红楼四大家族') # 在指定单元格插入数据,如在3行1列的单元格插入数据
  8. # 修改数据
  9. file_csv_data[2] = ['贾不假,白玉为堂金作马', '阿房宫,三百里,住不下金陵一个史', '东海缺少白玉床,龙王请来金陵王',
  10. '丰年好大雪,珍珠如土金如铁', ''] # 修改指定行一行数据
  11. file_csv_data[2][4] = '葫芦僧判葫芦案' # 修改某一单元格数据,如修改3行5列数据
  12. # 修改符合条件的数据数据
  13. # 修改符合要求的单元格数据:通过for循环遍历判断,例如修改单元格中包含1的数据,将1替换成一
  14. # for r_id, row in enumerate(file_csv_data): # 通过行号列号修改
  15. # for c_id, col in enumerate(row):
  16. # if '1' in col:
  17. # file_csv_data[r_id][c_id] = col.replace('1', '一')
  18. for row in file_csv_data: # 通过行数据及列号修改,比上面更方便
  19. for c_id, col in enumerate(row):
  20. if '1' in col:
  21. row[c_id] = col.replace('1', '一')
  22. # 第三步:写入报存数据
  23. with open(file_name, 'w', newline='') as f:
  24. write_file = csv.writer(f)
  25. write_file.writerows(file_csv_data)