Python Pandalar Verileri belirleme hatası


343

Bir .csv dosyasını işlemek için pandalar kullanmaya çalışıyorum ama bu hatayı alıyorum:

pandas.parser.CParserError: Verileri belirleme hatası. C hatası: 3. satırda beklenen 2 alan, testere 12

Panda belgelerini okumaya çalıştım ama hiçbir şey bulamadım.

Kodum basit:

path = 'GOOG Key Ratios.csv'
#print(open(path).read())
data = pd.read_csv(path)

Bunu nasıl çözebilirim? csvModülü veya başka bir dili kullanmalı mıyım ?

Dosya Morningstar'dan


10
Bu hata pandas.to_csv(), tarafından yazılan bir dosyayı okurken ortaya çıkarsa , bunun nedeni sütun adlarında bir '\ r' olması olabilir; bu durumda to_csv () aslında sonraki sütun adlarını veri çerçevesinin ilk sütununa yazarak neden olur ilk X satırındaki sütun sayısı arasındaki fark. Bu fark, C hatasının nedenlerinden biridir.
user0

9
Bazen sadece "sep" parametresini vermek yardımcı olur. Ayrıştırıcı bir sorun gibi görünüyor.
gilgamash

2
Bu hata, virgülleri ayırıcı olarak kullandığınızda ve beklenenden daha fazla virgül kullandığınızda da ortaya çıkabilir (hata satırında daha sonra başlıkta tanımlanan daha fazla alan). Bu nedenle, ek alanı kaldırmanız veya yanlışlıkla varsa ek virgül kaldırmanız gerekir. Bunu el ile düzeltebilir ve hata satırlarını atlamanız gerekmez.
tsveti_iko

2
Gılgamamın yorumu bana yardımcı oldu. Csv dosyasını bir metin düzenleyicide açın (windows düzenleyicisi veya notepad ++ gibi), bu nedenle ayırma için hangi karakterin kullanıldığını görün. Noktalı virgülse deneyin pd.read_csv("<path>", sep=";"). Excel'i denetlemek için kullanmayın, çünkü bazen verileri varsayılan olarak sütunlara koyar ve bu nedenle ayırıcıyı kaldırır.
Julian

@Gilgamash tarafından yorum ile ilgili - bu ancak benim durumumda açıkça tarafından çözüldü, doğru yönde beni gönderdi değil "Eylül" parametresini vererek.
TheLoneDeranger

Yanıtlar:


515

ayrıca deneyebilirsiniz;

data = pd.read_csv('file1.csv', error_bad_lines=False)

Bunun sorunlu satırların atlanmasına neden olacağını unutmayın.


152
Error_bad_lines = False kullanmanın rahatsız edici satırların atlanmasına neden olacağını unutmayın.
biobirdman

10
Bu cevap tökezledi, gibi bir şey çıktı satırlarda eksik sütunları doldurmanın bir yolu var expected 8 fields, saw 9mı?
Petra Barus

26
Daha iyi çözüm, rahatsız edici dosyayı araştırmak ve kötü satırları okumak için düzeltmektir read_csv. @PetraBarus, neden sadece onları eksik CSV dosyalarına sütunlar eklemiyorsunuz (gerekirse boş değerlerle)?
dbliss

4
Evet, sadece yaptım. Sütun ekleyerek çok daha kolay. CSV'yi bir e-tabloda açmak bunu yapar.
Petra Barus

5
Pas names=["col1", "col2", ...]beklenen sütunların maksimum sayısı için de çalışıyor ve bu ben karşıya geldiğimde bu sorunu çözmüş nasıl. Bakınız: stackoverflow.com/questions/18039057/…
Steven Rouk

100

İle ilgili bir sorun olabilir

  • verilerinizdeki sınırlayıcılar
  • @TomAugspurger'in belirttiği gibi ilk satır

Çözmek için arama yaparken sepve / veya headerbağımsız değişkenleri belirtmeyi deneyin read_csv. Örneğin,

df = pandas.read_csv(fileName, sep='delimiter', header=None)

Yukarıdaki kodda, sepsınırlayıcınızı tanımlar ve header=Nonepandalara kaynak verilerinizin üstbilgiler / sütun başlıkları için satır olmadığını bildirir. Bu nedenle docs : "Dosyada başlık satırı yoksa, açıkça başlık = Yok" iletmeniz gerekir. Bu durumda, pandalar her alan için otomatik olarak tam sayı endeksleri oluşturur {0,1,2, ...}.

Docs göre ayırıcı şey olmalı değil bir sorun olabilir. Dokümanlar "sep ise Hiçbiri [belirtilmemiş] ise bunu otomatik olarak belirlemeye çalışacaktır" der. Bununla birlikte, bariz sınırlayıcılara sahip örnekler de dahil olmak üzere, bu konuda iyi şansım olmadı.


Evet, bazen sorunun nedeni sınırlayıcı olabilir. Sınırlayıcının noktalı virgül olduğu aynı sorunla karşı karşıya kaldım (;)
Anurag Sharma

43

Ayrıştırıcı, dosyanın başlığı tarafından karıştırılıyor. İlk satırı okur ve bu satırdaki sütun sayısını alır. Ancak ilk iki satır, dosyadaki gerçek verileri temsil etmez.

İle deneyin data = pd.read_csv(path, skiprows=2)


30

CSV dosyanızda değişken sayıda sütun olabilir ve read_csvilk birkaç satırdaki sütun sayısını çıkarabilir. Bu durumda çözmenin iki yolu:

1) CSV dosyasını, maksimum sütun sayısı olan sahte bir ilk satıra sahip olacak şekilde değiştirin (ve belirtin header=[0])

2) Veya names = list(range(0,N))N'nin maksimum sütun sayısı olduğu yerlerde kullanın .


25

Bu kesinlikle bir sınırlayıcı sorunudur, çünkü csv CSV'nin çoğu, ayırıcı kullanarak sekme karakterini kullanmayı sep='/t'deneyin . bu nedenle, aşağıdaki kod satırını kullanarak açmayı deneyin.read_csv(\t)/t

data=pd.read_csv("File_path", sep='\t')

5
@MichaelQueue: Bu yanlış. Bir CSV, genel olarak virgülle sınırlansa da, diğer karakterler tarafından da sınırlandırılabilir. CSV spesifikasyonlarına bakın . Virgül, sekme ('\ t'), noktalı virgül ve muhtemelen ek boşluklar olabilir. :)
DJGrandpaJ

benim durumumda bu bir ayırıcı sorun oldu. read_csv görünüşte virgül olarak varsayılan ve i virgül içeren metin alanları var (ve veriler yine de farklı bir ayırıcı ile saklandı)
user108569

Değerlerde virgül kullanılır ancak sekme sınırlayıcıysa ve sep kullanılmazsa (veya değerlerde oluştuğu varsayıldığı şekilde ayırıcıların üzerinde önerildiği gibi) bu hata ortaya çıkar. Sınırlayıcının diğer değerlerin hiçbirinde oluşmadığından emin olun, bazı satırlarda yanlış sayıda sütun var gibi görünecektir
demongolem

CSV'yi oluştururken excel 2016 kullanıyorum ve sep = ';' benim için çalışmak
Abdullah Said

18

Bu sorunu da yaşadım ama belki farklı bir nedenden dolayı. CSV'mde pandaların okumaya çalıştığı ek bir sütun ekleyen bazı virgüller vardı. Aşağıdaki işleri kullanmak, ancak kötü satırları yok sayar:

data = pd.read_csv('file1.csv', error_bad_lines=False)

Çizgileri, hataları işlemek için çirkin bir hack tutmak istiyorsanız, aşağıdaki gibi bir şey yapmaktır:

line     = []
expected = []
saw      = []     
cont     = True 

while cont == True:     
    try:
        data = pd.read_csv('file1.csv',skiprows=line)
        cont = False
    except Exception as e:    
        errortype = e.message.split('.')[0].strip()                                
        if errortype == 'Error tokenizing data':                        
           cerror      = e.message.split(':')[1].strip().replace(',','')
           nums        = [n for n in cerror.split(' ') if str.isdigit(n)]
           expected.append(int(nums[0]))
           saw.append(int(nums[2]))
           line.append(int(nums[1])-1)
         else:
           cerror      = 'Unknown'
           print 'Unknown Error - 222'

if line != []:
    # Handle the errors however you want

DataFrame satırları yeniden eklemek için bir komut dosyası yazmaya devam ettim, çünkü kötü satırlar yukarıdaki kodda 'line' değişkeni tarafından verilecek. Tüm bunlar sadece csv okuyucu kullanılarak önlenebilir. Umarım panda geliştiricileri gelecekte bu durumla başa çıkmayı kolaylaştırabilir.


14

Sütun adlarını geçmeden bir CSV'de okumaya çalıştığım bu sorunu yaşadım.

df = pd.read_csv(filename, header=None)

Önceden bir listede sütun adlarını belirttim ve sonra bunları geçtim namesve hemen çözdüm. Sütun adlarını ayarlamadıysanız, verilerinizde bulunabilecek maksimum sütun sayısı kadar çok yer tutucu adı oluşturabilirsiniz.

col_names = ["col1", "col2", "col3", ...]
df = pd.read_csv(filename, names=col_names)

1
Bu yanıtı daha iyi çünkü satır error_bad_line = False ile karşılaştırıldığında silinmiyor. Ayrıca, bir kez bu çözümden bir veri çerçevesi yaparken hangi satırların sorunlu olduğunu kolayca anlayabilirsiniz.
zipline86

@ Zipline86 ile hemfikirim. Bu cevap güvenli ve akıllıdır.
Monica Heddneck

11

Bu problemi birkaç kez yaşadım. Hemen hemen her seferinde, açmaya çalıştığım dosyanın başlamak için düzgün bir şekilde kaydedilmiş bir CSV olmamasıydı. "Düzgün" demekle, her satırda aynı sayıda ayırıcı veya sütun vardı.

Genellikle CSV'yi Excel'de açıp yanlış bir şekilde kaydettiğim için oldu. Dosya uzantısı hala .csv olmasına rağmen, saf CSV biçimi değiştirilmişti.

Panda to_csv ile kaydedilen tüm dosyalar düzgün biçimlendirilir ve bu sorunla karşılaşılmamalıdır. Ancak başka bir programla açarsanız, yapıyı değiştirebilir.

Umarım yardımcı olur.


8

Aynı sorunla karşılaştım. pd.read_table()Aynı kaynak dosya üzerinde kullanmak işe yaramış gibi görünüyordu. Bunun nedenini takip edemedim ama benim durumum için yararlı bir çözümdü. Belki de daha bilgili biri neden çalıştığına daha fazla ışık tutabilir.

Düzenleme: Dosyanızda gerçek verilerle aynı biçime sahip olmayan bir metin olduğunda bu hatanın sürüntüğünü fark ettim. Bu genellikle üstbilgi veya altbilgi bilgisidir (birden fazla satır, bu nedenle skip_header çalışmaz) ve gerçek verilerinizle aynı sayıda virgülle ayrılmayacaktır (read_csv kullanılırken). Read_table kullanımı, sınırlayıcı olarak kullanıcıların geçerli hatayı atlatabilecek ancak başkalarını tanıtabilecek bir sekme kullanır.

Genellikle bir dosyaya fazladan veri okuyarak bunu almak sonra read_csv () yöntemini kullanın.

Tam çözüm gerçek dosyanıza bağlı olarak değişebilir, ancak bu yaklaşım benim için birkaç durumda işe yaradı


6

Aşağıdakiler benim için çalıştı (bu cevabı özellikle bir Google İşbirliği Not Defteri'nde yaşadığım için yayınladım):

df = pd.read_csv("/path/foo.csv", delimiter=';', skiprows=0, low_memory=False)

1
|.Csv için sınırlayıcı olarak ayarlanmadığında sorunları denedim. Çizgileri veya kötü çizgileri atlamak yerine önce bu yaklaşımı denemeyi tercih ederim.
ivanleoncz

Ben de aynı sorunu vardı, varsayılan olarak "\ t" bir sınırlayıcı olarak algılanacağını varsaydım. Sınırlayıcıyı "\ t" olarak açıkça ayarladığımda çalıştı.
Rahul Jha

5

Boşlukları, virgül ve tırnak işaretleri içeren sekmeyle ayrılmış bir tabloyu okumaya çalışırken benzer bir sorun yaşadım:

1115794 4218    "k__Bacteria", "p__Firmicutes", "c__Bacilli", "o__Bacillales", "f__Bacillaceae", ""
1144102 3180    "k__Bacteria", "p__Firmicutes", "c__Bacilli", "o__Bacillales", "f__Bacillaceae", "g__Bacillus", ""
368444  2328    "k__Bacteria", "p__Bacteroidetes", "c__Bacteroidia", "o__Bacteroidales", "f__Bacteroidaceae", "g__Bacteroides", ""



import pandas as pd
# Same error for read_table
counts = pd.read_csv(path_counts, sep='\t', index_col=2, header=None, engine = 'c')

pandas.io.common.CParserError: Error tokenizing data. C error: out of memory

Bu, C ayrıştırma motoruyla (varsayılan olan) bir ilgisi olduğunu söylüyor. Belki bir python'a geçmek her şeyi değiştirir

counts = pd.read_table(path_counts, sep='\t', index_col=2, header=None, engine='python')

Segmentation fault (core dumped)

Şimdi bu farklı bir hata.
Devam edip tablodan boşluk kaldırmaya çalışırsak, python-engine'ten gelen hata bir kez daha değişir:

1115794 4218    "k__Bacteria","p__Firmicutes","c__Bacilli","o__Bacillales","f__Bacillaceae",""
1144102 3180    "k__Bacteria","p__Firmicutes","c__Bacilli","o__Bacillales","f__Bacillaceae","g__Bacillus",""
368444  2328    "k__Bacteria","p__Bacteroidetes","c__Bacteroidia","o__Bacteroidales","f__Bacteroidaceae","g__Bacteroides",""


_csv.Error: '   ' expected after '"'

Ve pandaların sıralarımızı ayrıştırmakta sorun yaşadıkları anlaşılıyor. Bir tabloyu python motoruyla ayrıştırmak için önceden tablodaki tüm boşlukları ve tırnak işaretlerini kaldırmam gerekiyordu. Bu sırada C-motoru, satırlardaki virgüllerle bile düşmeye devam etti.

Değiştirmelerle yeni bir dosya oluşturmaktan kaçınmak için, tablolarım küçük olduğu için bunu yaptım:

from io import StringIO
with open(path_counts) as f:
    input = StringIO(f.read().replace('", ""', '').replace('"', '').replace(', ', ',').replace('\0',''))
    counts = pd.read_table(input, sep='\t', index_col=2, header=None, engine='python')

tl; dr
Ayrıştırma motorunu değiştirin, verilerinizdeki sınırlayıcı olmayan tırnak / virgül / boşluklardan kaçının.


5

Kullandığım veri kümesi biçimlendirme yabancı kullanılan alıntı işaretler (") bir sürü vardı.Aşağıdaki için bu parametreyi ekleyerek hatayı düzeltmek mümkün read_csv():

quoting=3 # 3 correlates to csv.QUOTE_NONE for pandas

2
aynı şey karşısında tökezledi. Bence bu doğru cevap. Kabul edilen, hatayı gizler.
lhk

Benim için de doğru cevap. +1
Taha Jirjees

4

Parametrede ayırıcı kullan

pd.read_csv(filename, delimiter=",", encoding='utf-8')

Okur.


3

Bu soru için geçerli olmasa da, bu hata sıkıştırılmış verilerle de görünebilir. Açıkça için değeri ayarlamak kwarg compressionbenim sorun çözüldü.

result = pandas.read_csv(data_source, compression='gzip')

3

Benzer ayrıştırma hataları ile ilgili olarak yararlı bulduğum bir alternatif, verileri panda df'ye yeniden yönlendirmek için CSV modülünü kullanır. Örneğin:

import csv
import pandas as pd
path = 'C:/FileLocation/'
file = 'filename.csv'
f = open(path+file,'rt')
reader = csv.reader(f)

#once contents are available, I then put them in a list
csv_list = []
for l in reader:
    csv_list.append(l)
f.close()
#now pandas has no problem getting into a df
df = pd.DataFrame(csv_list)

CSV modülünün, kötü biçimlendirilmiş virgülle ayrılmış dosyalara göre biraz daha sağlam olduğunu ve bu gibi sorunları ele almak için bu yolla başarılı olduklarını düşünüyorum.


3

Aşağıdaki komutlar dizisi çalışır (verinin ilk satırını kaybederim -no header = Yok mevcut-, ama en azından yüklenir):

df = pd.read_csv(filename, usecols=range(0, 42)) df.columns = ['YR', 'MO', 'DAY', 'HR', 'MIN', 'SEC', 'HUND', 'ERROR', 'RECTYPE', 'LANE', 'SPEED', 'CLASS', 'LENGTH', 'GVW', 'ESAL', 'W1', 'S1', 'W2', 'S2', 'W3', 'S3', 'W4', 'S4', 'W5', 'S5', 'W6', 'S6', 'W7', 'S7', 'W8', 'S8', 'W9', 'S9', 'W10', 'S10', 'W11', 'S11', 'W12', 'S12', 'W13', 'S13', 'W14']

Aşağıdaki çalışmaz:

df = pd.read_csv(filename, names=['YR', 'MO', 'DAY', 'HR', 'MIN', 'SEC', 'HUND', 'ERROR', 'RECTYPE', 'LANE', 'SPEED', 'CLASS', 'LENGTH', 'GVW', 'ESAL', 'W1', 'S1', 'W2', 'S2', 'W3', 'S3', 'W4', 'S4', 'W5', 'S5', 'W6', 'S6', 'W7', 'S7', 'W8', 'S8', 'W9', 'S9', 'W10', 'S10', 'W11', 'S11', 'W12', 'S12', 'W13', 'S13', 'W14'], usecols=range(0, 42))

CParserError: Verileri belirleme hatası. C hatası: 1605634 satırında 53 alan bekleniyordu, testere 54 Aşağıdakiler çalışmıyor:

df = pd.read_csv(filename, header=None)

CParserError: Verileri belirleme hatası. C hatası: 1605634 satırında 53 alan bekleniyordu, testere 54

Bu nedenle, probleminizde geçmek zorundasınız usecols=range(0, 2)


3

Linux OS'de Python 3 ile benzer sorunu olanlar için.

pandas.errors.ParserError: Error tokenizing data. C error: Calling
read(nbytes) on source failed. Try engine='python'.

Deneyin:

df.read_csv('file.csv', encoding='utf8', engine='python')

2

Bazen sorun python'un nasıl kullanılacağı değil, ham verilerle.
Bu hata mesajını aldım

Error tokenizing data. C error: Expected 18 fields in line 72, saw 19.

Sütun açıklamasında bazen virgül olduğu ortaya çıktı. Bu, CSV dosyasının temizlenmesi veya başka bir ayırıcı kullanılması gerektiği anlamına gelir.



1

Önceden varolan satır numaraları ile bir veri kümesi vardı, index_col kullandım:

pd.read_csv('train.csv', index_col=0)

1

Ben de öyle yaptım.

sep='::' sorunumu çözdü:

data=pd.read_csv('C:\\Users\\HP\\Downloads\\NPL ASSINGMENT 2 imdb_labelled\\imdb_labelled.txt',engine='python',header=None,sep='::')

1

Ben buna benzer bir dava vardı ve ayar

train = pd.read_csv('input.csv' , encoding='latin1',engine='python') 

işlenmiş


1

Ben aynı sorunu read_csv: ParserError: veri belirteç hatası. Eski csv dosyasını yeni bir csv dosyasına kaydettim. Problem çözüldü!


1

Benim için mesele yeni bir sütun benim CSV eklenen olmasıydı gün içi . Kabul edersem cevap çözümü işe yaramaz çünkü kullandığım sonraki her satır atılacaktırerror_bad_lines=False .

Bu durumda çözüm, içindeki usecols parametresini kullanmaktı pd.read_csv(). Bu şekilde yalnızca CSV'ye okumam gereken sütunları belirtebilirim ve Python kodum, bir başlık sütunu mevcut olduğu sürece (ve sütun adları değişmediği sürece) gelecekteki CSV değişikliklerine dayanıklı kalacaktır.

usecols : list-like or callable, optional 

Return a subset of the columns. If list-like, all elements must either
be positional (i.e. integer indices into the document columns) or
strings that correspond to column names provided either by the user in
names or inferred from the document header row(s). For example, a
valid list-like usecols parameter would be [0, 1, 2] or ['foo', 'bar',
'baz']. Element order is ignored, so usecols=[0, 1] is the same as [1,
0]. To instantiate a DataFrame from data with element order preserved
use pd.read_csv(data, usecols=['foo', 'bar'])[['foo', 'bar']] for
columns in ['foo', 'bar'] order or pd.read_csv(data, usecols=['foo',
'bar'])[['bar', 'foo']] for ['bar', 'foo'] order.

Misal

my_columns = ['foo', 'bar', 'bob']
df = pd.read_csv(file_path, usecols=my_columns)

Bunun başka bir yararı, 18-20 sütunlu bir CSV'nin sadece 3-4 sütununu kullanıyorsam belleğe daha az veri yükleyebilmemdir.


1

Basit çözünürlük : csv dosyasını excel'de açın ve csv biçiminin farklı ad dosyasıyla kaydedin. Yine spyder almayı deneyin, Sorununuz çözülecek!


1

Bu hatayı başıboş tırnak işareti ile karşılaştım. Virgülle ayrılmış dosyaları dışa aktarırken metin öğelerinin içine tırnak işaretleri koyacak eşleme yazılımı kullanıyorum. Alıntı işaretleri kullanan metin (örn. '= Feet ve "= inç), daha sonra sınırlayıcı çarpışmalarını tetiklediğinde sorunlu olabilir.

UWI_key,Latitude,Longitude,Remark US42051316890000,30.4386484,-96.4330734,"poor 5""

5"İşlerde 5 inchbir İngiliz anahtarı atmak için kestirme olarak kullanmak . Excel ekstra tırnak işaretini kaldırır, ancak Pandalar error_bad_lines=Falseyukarıda belirtilen argüman olmadan bozulur .


1

Bildiğim kadarıyla ve dosya bir göz attıktan sonra sorun, yüklemeye çalıştığınız csv dosyasında birden çok tablo olmasıdır. Boş satırlar veya tablo başlıklarını içeren satırlar var. Bu Stackoverflow yanıtına bir göz atmaya çalışın . Bunu programlı olarak nasıl başaracağını gösterir.

Bunu yapmak için başka bir dinamik yaklaşım csv modülünü kullanmak olacaktır. her satırı tek tek okumak ve sırayla (başlık / üstbilgi / değerler / boş) çıkarım yapmak için sağlık kontrolleri / düzenli ifadeler yapmak olacaktır. Bu yaklaşımla, python nesnelerinde verilerinizi istediğiniz gibi bölebileceğiniz / ekleyebileceğiniz / toplayabileceğiniz bir avantaj daha var.

En kolayı pd.read_clipboard(), csv'yi excel veya başka bir şeyle açmanız durumunda, tabloyu manuel olarak seçip panoya kopyaladıktan sonra panda işlevini kullanmak olacaktır .

Alakasız :

Ayrıca, sorununuzla ilgisiz, ancak kimse bundan bahsetmediği için : seeds_dataset.txtUCI gibi bazı veri kümelerini yüklerken de aynı sorunu yaşadım . Benim durumumda, bazı ayırıcıların gerçek bir sekmeden daha fazla boşluk olduğu için hata oluşuyordu \t. Örneğin aşağıdaki 3. satıra bakın

14.38   14.21   0.8951  5.386   3.312   2.462   4.956   1
14.69   14.49   0.8799  5.563   3.259   3.586   5.219   1
14.11   14.1    0.8911  5.42    3.302   2.7     5       1

Bu nedenle, \t+yerine ayırıcı desen kullanın \t.

data = pd.read_csv(path, sep='\t+`, header=None)

1

Benim durumumda, çünkü csv dosyasının ilk ve son iki satırının biçimi dosyanın orta içeriğinden farklıdır.

Yani ne yaptığım csv dosyasını bir dize olarak açmak, dize içeriğini ayrıştırmak, sonra read_csvbir veri çerçevesi almak için kullanın.

import io
import pandas as pd

file = open(f'{file_path}/{file_name}', 'r')
content = file.read()

# change new line character from '\r\n' to '\n'
lines = content.replace('\r', '').split('\n')

# Remove the first and last 2 lines of the file
# StringIO can be considered as a file stored in memory
df = pd.read_csv(StringIO("\n".join(lines[2:-2])), header=None)

1

Benim durumumda ayırıcı varsayılan "," değil, Sekme idi.

pd.read_csv(file_name.csv, sep='\\t',lineterminator='\\r', engine='python', header='infer')

Not: "\ t" bazı kaynaklar tarafından önerildiği gibi çalışmadı. "\\ t" gerekiyordu.


0

Benzer bir hata vardı ve sorun csv dosyamda bazı kaçan tırnak vardı ve escapechar parametresini uygun şekilde ayarlamak için gerekli oldu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.