2011-05-15 12 views
12

मैं एक csv फ़ाइल पढ़ रहा हूँ में बैकस्लैश पर ध्यान नहीं देता टैब डबल उद्धरण में संलग्न कुछ मूल्यों के साथ अलग है। समस्या तब होती है जब मैं उस कॉलम के मानों को पढ़ता हूं जिसमें '\' वर्ण होता है, यह मान से बाहर हो जाता है।opencsv</p> <p>opencsv का उपयोग कर रहा सीएसवी csv फ़ाइल की पहली पंक्ति अनदेखी कर रहा हूँ एक फ़ील्ड मान

reader = new CSVReader(new FileReader(exchFileObj),'\t','"',1); 

उदाहरण के लिए मूल फ़ाइल पते में = 12 \ 91buenosaires

यह

पता बन जाता है = 1291buenosiares

स्ट्रिंग सरणी कि csvreader को बनाने वाला

। '\' चरित्र को पढ़ने में सक्षम होने के लिए मैं इसे कैसे संशोधित करूं?

+0

opencsv का उपयोग करता है '' \\ भागने चरित्र के रूप में, आप में प्रवेश करने की आवश्यकता हो सकती है '\\ \\ 'आपकी फाइल में। यदि आप नहीं कर सकते हैं, तो क्या आप खुले सीएसवी में एक अलग बचने वाला चरित्र सेट कर सकते हैं? – rsp

उत्तर

3

CSVReader में constructor भी है जिसके माध्यम से आप भागने के पात्र को उपयोग करने के लिए सेट कर सकते हैं। यदि आप इसका उपयोग करते हैं और बचने वाले चरित्र को उस चीज़ पर सेट करते हैं जिसका आप उपयोग नहीं करते हैं तो आपको अपने इनपुट में बैकस्लैश कैरेक्टर मिलेगा।

20

मुझे एक ही समस्या थी और मुझे एक और चरित्र नहीं मिला जिसे मैं गारंटी दे सकता था, मेरी सीएसवी फ़ाइल में दिखाई नहीं देगी। Sourceforge पर एक पोस्ट के मुताबिक, आप स्पष्ट कन्स्ट्रक्टर का उपयोग '\ 0' के साथ कर सकते हैं यह इंगित करने के लिए कि आप किसी भी बचने वाले चरित्र को नहीं चाहते हैं।

http://sourceforge.net/tracker/?func=detail&aid=2983890&group_id=148905&atid=773542

CSVParser parser = new CSVParser(CSVParser.DEFAULT_SEPARATOR, CSVParser.DEFAULT_QUOTE_CHARACTER, '\0', CSVParser.DEFAULT_STRICT_QUOTES); 

मैं सरसरी परीक्षण का एक सा था, और यह सिर्फ ठीक काम करने के लिए, कम से कम बैकस्लैश पर निश्चित रूप से यह माध्यम से कर रहा है।

0

हुई वांग उत्तर के अतिरिक्त, आपको CSVReader के निर्माता में इस निर्मित CSVParser का उपयोग करना होगा। ही उपलब्ध निर्माता है:

public CSVReader(Reader reader, int line, CSVParser csvParser) 

आप 0 करने के लिए लाइन सेट कर सकते हैं इतना है कि यह कुछ भी नहीं छोड़ेगा

संबंधित मुद्दे