ไทย

ข้อมูลและสเปรดชีต · CSV สะอาดยิ่งขึ้น

CSV ภาษาถิ่นที่หลบหนี: เครื่องหมายคำพูดสองเท่า, แบ็กสแลชและการส่งออกฐานข้อมูล

· พื้นหลัง

csv การแยกวิเคราะห์ การทำงานร่วมกัน

เส้นทาง CSV เครื่องหมายคำพูดคู่ประสบความสำเร็จในขณะที่การหลีกเครื่องหมายแบ็กสแลชยังคงเป็นข้อความตามตัวอักษร
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

RFC 4180 พูดให้เพิ่มเครื่องหมายคำพูดเป็นสองเท่า เครื่องมือฐานข้อมูลหลายตัวส่งออกด้วยแบ็กสแลชแทน โพสต์นี้จะอธิบายแบบแผน Escape ในการหมุนเวียน แต่ละไฟล์มาจากไหน และเหตุใดไฟล์ที่ถูกต้องในภาษาถิ่นหนึ่งจึงแตกในอีกภาษาหนึ่ง

การส่งออกฐานข้อมูลที่สเปรดชีตอ่านโดยมีแบ็กสแลชจรจัด - ประเพณีการหลบหนีสองแบบขัดแย้งกันในไฟล์เดียว

การส่งออกสามารถมีแบ็กสแลชตามด้วยเครื่องหมายคำพูด เนื่องจากตัวสร้างเป็นไปตามรูปแบบภาษาการเขียนโปรแกรม ในขณะที่ parser ที่เน้นสเปรดชีตคาดว่าจะมีเครื่องหมายคำพูดสองเท่า การป้อนภาษาถิ่นหนึ่งไปยังอีกภาษาหนึ่งไม่ได้สร้างการประนีประนอมที่เป็นกลาง โดยจะเปลี่ยนตำแหน่งที่สถานะเครื่องหมายคำพูดเปิดและปิดหรือปล่อยอักขระหลีกไว้ในข้อมูล

ToolAcre รองรับกฎหนึ่งข้อที่ชัดเจน: ช่องต่างๆ สามารถใส่เครื่องหมายคำพูดคู่ได้ และเครื่องหมายคำพูดด้านในจะแสดงด้วยเครื่องหมายคำพูดสองใบ แบ็กสแลชไม่มีบทบาทการหลีกหนี การระบุสัญญาก่อนการโหลดจะปลอดภัยกว่าการขอให้พนักงานทำความสะอาดเดาว่าผู้ผลิตตั้งใจจะใช้เครื่องหมายวรรคตอนใด

แบบแผน RFC — ล้อมด้วยเครื่องหมายคำพูดคู่และเพิ่มเครื่องหมายคำพูดภายในเป็นสองเท่า โดยไม่มีอักขระหลีกเลย

สำหรับค่าเช่น `She said "hello", then left` นั้น RFC-style CSV จะล้อมรอบฟิลด์และเขียนเครื่องหมายด้านในสองครั้ง ตัวคั่นจะยังคงอยู่ในสถานะเครื่องหมายคำพูด และคู่คู่แต่ละคู่จะส่งกลับเครื่องหมายคำพูดหนึ่งตัว การทำให้เป็นอนุกรมจะใช้การแปลงแบบเดียวกันในทางกลับกัน

ฟิลด์จะถูกยกมาเมื่อมีตัวคั่นปัจจุบัน ใบเสนอราคา LF, CR หรือช่องว่างโดยรอบ หรือเมื่อใดก็ตามที่เลือกใบเสนอราคาทุกฟิลด์ ไม่มีอักขระหลีกแยกกัน ไวยากรณ์ขนาดเล็กนี้ได้รับการทดสอบสำหรับตัวคั่น การลงท้ายบันทึกแบบฝัง และคู่เครื่องหมายคำพูด

ประเพณี C - เครื่องหมายคำพูดแบบใช้เครื่องหมายแบ็กสแลช การขึ้นบรรทัดใหม่ และตัวคั่นที่สืบทอดมาจากภาษาการเขียนโปรแกรมและตัวโหลดฐานข้อมูลบางตัว

ระบบต้นทางบางระบบสามารถกำหนดแบบแผนแบ็กสแลชได้ แต่ ToolAcre ไม่มีสวิตช์สำหรับสิ่งเหล่านั้น แบ็กสแลชจะถูกผนวกเข้ากับฟิลด์ปัจจุบันเหมือนกับอักขระทั่วไป เครื่องหมายคำพูดต่อไปนี้จะถูกตีความตามว่า parser อยู่ในสถานะเครื่องหมายคำพูดหรือไม่และมีเครื่องหมายคำพูดที่จับคู่หรือไม่

ดังนั้น การส่งออกแบ็กสแลชควรแยกวิเคราะห์โดยเครื่องมือที่กำหนดค่าสำหรับภาษาถิ่นนั้น ก่อนที่จะแปลงเป็นเครื่องหมายคำพูดคู่ CSV การค้นหาและแทนที่มีความเสี่ยงเนื่องจากแบ็กสแลชตามตัวอักษรและลำดับที่หลีกสามารถมีลักษณะเหมือนกันได้ ไวยากรณ์ต้นฉบับจะต้องตัดสินใจว่าอันไหนเป็นไวยากรณ์

การหลีกแบ็กสแลชเป็นภาษาถิ่นอื่นที่ไม่รองรับ ไม่ใช่โหมด ToolAcre ที่สามารถอ่านได้

สมุดงานจะตั้งชื่อผลิตภัณฑ์ฐานข้อมูลและไลบรารีเฟรมข้อมูล แต่ค่าเริ่มต้นและโหมดที่กำหนดค่าได้จะไม่ได้รับการบันทึกไว้ในที่เก็บนี้ บทความนี้ไม่ได้ระบุถึงภาษาถิ่นของผู้ขายรายใดรายหนึ่ง ศึกษาเอกสารประกอบของผู้ส่งออกหรือตัวโหลดที่ใช้โดยเวิร์กโฟลว์

จับคำสั่งและตัวเลือกที่สร้างไฟล์ ผลิตภัณฑ์อาจรองรับหลายโหมด ดังนั้นชื่อเพียงอย่างเดียวจึงไม่ใช่ภาษาถิ่น ความสามารถในการทำซ้ำมาจากการกำหนดค่าบวกกับตัวอย่างที่มีตัวคั่น เครื่องหมายคำพูด ขึ้นบรรทัดใหม่และแบ็กสแลช Edge

ค่าเริ่มต้นของฐานข้อมูลและไลบรารีเฉพาะจำเป็นต้องมีเอกสารของตนเองและไม่ได้อ้างสิทธิ์ที่นี่

ภายใต้ parser นี้ `"a \"quote\"",b` ไม่ได้หมายความว่าสิ่งที่ผู้อ่านสไตล์ C อาจคาดหวัง เนื่องจากเครื่องหมายทับยังคงอยู่ในข้อความและเครื่องหมายคำพูดจะควบคุมสถานะ CSV ในทางกลับกัน คู่ที่ทวีคูณภายในฟิลด์ที่มีเครื่องหมายคำพูดจะกลายเป็นเครื่องหมายคำพูดเดียวแทนที่จะเป็นอักขระตัวอักษรสองตัว

ความไม่ตรงกันอาจทำให้เกิดการเลื่อนคอลัมน์หรือคำเตือนเครื่องหมายคำพูดที่ไม่ปิด หรืออาจแยกวิเคราะห์เป็นสตริงที่ดูผิดโดยไม่มีข้อผิดพลาดทางโครงสร้าง ดูตัวอย่างแถวตัวแทนและเปรียบเทียบกับผู้ผลิต ความสำเร็จทางวากยสัมพันธ์เพียงอย่างเดียวไม่สามารถรับรองได้ว่าซีแมนทิกส์การหลีกตรงกัน

ภายใต้กฎ ToolAcre แบ็กสแลชยังคงเป็นตัวอักษรและเครื่องหมายคำพูดสองเท่าเป็นเพียงเครื่องหมายหลีกหนี

เขียนหนึ่งเซลล์ที่มีทั้งเครื่องหมายจุลภาคและเครื่องหมายคำพูดเป็น RFC CSV: `"She said ""hi"", then left"` ToolAcre ส่งกลับค่าที่แน่นอน `She said "hi", then left` เขียนเครื่องหมายคำพูดด้านในด้วยเครื่องหมายแบ็กสแลชแทน และสังเกตว่าเครื่องหมายทับไม่มีการป้องกันเป็นพิเศษ

การเปรียบเทียบแสดงให้เห็นถึงกฎพาร์เซอร์โดยไม่ต้องขึ้นอยู่กับแบรนด์ฐานข้อมูล หลังจากแยกวิเคราะห์ถูกต้องแล้ว การดาวน์โหลดจะสร้างเครื่องหมายคำพูดสองเท่าอย่างสม่ำเสมอ หลังจากการแยกวิเคราะห์ที่ไม่ตรงกัน การส่งออกเพียงสร้างมาตรฐานให้กับเซลล์ที่ไม่ถูกต้อง ดังนั้นให้แก้ไขภาษาถิ่นของแหล่งที่มาก่อนที่จะเชื่อถือผลลัพธ์

สิ่งนี้ไม่ครอบคลุม — การส่งออกไบนารี ไฟล์ที่มีความกว้างคงที่ และอักขระหลีกแบบกำหนดเองทั้งหมด

การส่งออกไบนารี บันทึกที่มีความกว้างคงที่ และอักขระ Escape แบบกำหนดเองอยู่นอกเส้นทาง มีการรายงานใบเสนอราคาที่ไม่ได้ปิดและใช้อินพุตที่เหลือเป็นฟิลด์เดียว พนักงานทำความสะอาดไม่ได้สรุปว่าการปิดที่หายไปนั้นอยู่ที่ไหน ความคลุมเครือดังกล่าวไม่สามารถซ่อมแซมได้โดยทั่วไป

อินเทอร์เฟซไม่แปลงภาษาแบ็กสแลชโดยอัตโนมัติ ใช้ตัวแยกวิเคราะห์ที่ตั้งชื่ออักขระ Escape อย่างชัดเจน รับตารางสตริงที่ตรวจสอบแล้ว จากนั้นทำให้เป็นอนุกรมตามแบบแผนเป้าหมาย ไวยากรณ์แต่ละรายการควรใช้ครั้งเดียวในขอบเขตที่ทราบ

รู้ภาษาถิ่นทั้งสองด้าน — วิธีที่ ToolAcre CSV การซ่อมแซมการเสนอราคาของ Cleaner จะทำให้ฟิลด์เป็นมาตรฐานสำหรับการเสนอราคาที่สอดคล้องกันที่ parsers มาตรฐานอ่าน

รู้จุดสิ้นสุดทั้งสอง ToolAcre เหมาะสมเมื่อแหล่งที่มาตามเครื่องหมายคำพูดคู่ CSV หรือเมื่อ parser อื่นได้ทำให้ภาษาถิ่นอื่นเป็นมาตรฐานในเซลล์ที่ได้รับการตรวจสอบแล้ว ผลลัพธ์นำเสนอการเสนอราคาขั้นต่ำหรือทุกฟิลด์ที่สอดคล้องกัน และเพิ่มการเสนอราคาแบบฝังทุกรายการเป็นสองเท่า

อย่าเข้าใจผิดว่าการดาวน์โหลดที่ล้างข้อมูลแล้วสำหรับการตรวจจับภาษาถิ่น ตัวตรวจจับอัตโนมัติจะเลือกตัวคั่น ไม่ใช่ไวยากรณ์แบบหลีก ตัวแยกบันทึกการถ่ายโอนที่เชื่อถือได้ กฎการเสนอราคา นโยบายการขึ้นบรรทัดใหม่ และการเข้ารหัสร่วมกัน จากนั้นทดสอบตัวอย่างที่ขัดแย้งกันก่อนที่ข้อมูลการผลิตจะย้าย