សូមប្រយ័ត្នពេលអាន csv ដែលមានសញ្ញាក្បៀស អមដោយចន្លោះនៅក្នុង Python

អាជីវកម្ម

នៅក្នុង Python អ្នកអាចអាន និងសរសេរឯកសារ csv យ៉ាងងាយស្រួលដោយប្រើម៉ូឌុល csv ស្តង់ដារ។

ឧទាហរណ៍ ឧបមាថាអ្នកមាន csv, sample.csv ខាងក្រោម។

11,12,13,14
21,22,23,24
31,32,33,34

នេះអាចត្រូវបានអានដូចខាងក្រោម។

import csv

with open('data/src/sample.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']

អ្វីដែលអ្នកត្រូវប្រុងប្រយ័ត្ននៅទីនេះ គឺនៅពេលដែលមានចន្លោះបន្ទាប់ពីសញ្ញាក្បៀស។ ជាធម្មតា វាមិនគួរមានចន្លោះដែលមិនចាំបាច់បន្ទាប់ពីសញ្ញាក្បៀសទេ ប៉ុន្តែពេលខ្លះខ្ញុំឃើញឯកសារដែលមានដកឃ្លានៅក្នុងពួកវា។

ក្នុងករណីបែបនេះ តាមលំនាំដើម ចន្លោះទទេមិនត្រូវបានអើពើទេ ហើយឯកសារត្រូវបានអានដូចដែលនៅដដែល។

11, 12, 13, 14
21, 22, 23, 24
31, 32, 33, 34

ម្យ៉ាងវិញទៀត ប្រសិនបើអ្នកអានឯកសារខាងលើដោយប្រើសញ្ញាក្បៀស អមដោយដកឃ្លា លទ្ធផលនឹងមានដូចខាងក្រោម

with open('data/src/sample_space.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['11', ' 12', ' 13', ' 14']
# ['21', ' 22', ' 23', ' 24']
# ['31', ' 32', ' 33', ' 34']

ប្រសិនបើអ្នកបញ្ជាក់ដូចខាងក្រោមនៅក្នុង csv.reader ចន្លោះបន្ទាប់ពីសញ្ញាក្បៀសនឹងត្រូវបានរំលង។
skipinitialspace=True

with open('data/src/sample_space.csv', 'r') as f:
    reader = csv.reader(f, skipinitialspace=True)
    for row in reader:
        print(row)
# ['11', '12', '13', '14']
# ['21', '22', '23', '24']
# ['31', '32', '33', '34']

ក្នុង​ឧទាហរណ៍​សាមញ្ញ​ដូច​រូប​ខាង​លើ អ្នក​អាច​ប្រើ strip() ដើម្បី​លុប​ដកឃ្លា​ចេញ។ បញ្ហាគឺនៅពេលដែលវាត្រូវបានហ៊ុំព័ទ្ធដោយសញ្ញាសម្រង់ទ្វេដូចខាងក្រោម។

"one,one", "two,two", "three,three"

ផ្នែកដែលហ៊ុំព័ទ្ធដោយសញ្ញាសម្រង់ទ្វេគួរត្រូវបានចាត់ទុកថាជាធាតុតែមួយ ប៉ុន្តែប្រសិនបើ skipinitialspace=False (លំនាំដើម) វានឹងមើលទៅដូចខាងក្រោម។

with open('data/src/sample_double_quotation.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)
# ['one,one', ' "two', 'two"', ' "three', 'three"']

នេះអាចត្រូវបានធ្វើដោយការកំណត់ skipinitialspace=True ។

with open('data/src/sample_double_quotation.csv', 'r') as f:
    reader = csv.reader(f, skipinitialspace=True)
    for row in reader:
        print(row)
# ['one,one', 'two,two', 'three,three']

ដូចគ្នាដែរនៅពេលអានឯកសារ csv ជាមួយ read_csv() នៅក្នុងផេនដា។ ប្រសិនបើឯកសារ csv មានចន្លោះបន្ទាប់ពីសញ្ញាក្បៀស អ្នកអាចធ្វើដូចខាងក្រោម។
read_csv(skipinitialspace=True)

Copied title and URL