วิธีเขียนตัวอักษรสตริงใน python โดยไม่ต้องหลบหนี


104

มีวิธีประกาศตัวแปรสตริงใน python เพื่อให้ทุกอย่างที่อยู่ในนั้นหนีโดยอัตโนมัติหรือมีค่าอักขระตามตัวอักษรหรือไม่?

ฉันไม่ได้ถามว่าจะหนีเครื่องหมายคำพูดด้วยเครื่องหมายทับที่ชัดเจนได้อย่างไร สิ่งที่ฉันขอคือวิธีวัตถุประสงค์ทั่วไปในการสร้างทุกอย่างในสตริงลิเทอรัลเพื่อที่ฉันจะได้ไม่ต้องดำเนินการด้วยตนเองและหลีกเลี่ยงทุกสิ่งสำหรับสตริงขนาดใหญ่ ใครรู้วิธีแก้ปัญหา? ขอบคุณ!

คำตอบ:



74

หากคุณกำลังจัดการกับสตริงที่มีขนาดใหญ่มากโดยเฉพาะสตริงแบบหลายบรรทัดโปรดทราบไวยากรณ์คำพูดสามคำ :

a = r"""This is a multiline string
with more than one line
in the source code."""

1
โครงสร้างนี้แนะนำอักขระตัวแบ่งบรรทัดหรือไม่ นั่นคือตัวแปรaจะมีสตริงที่มีอักขระแบ่งบรรทัดสองตัว?
MadPhysicist

7
@MadPhysicist: ใช่สตริงผลลัพธ์จะมีสองบรรทัดใหม่ในกรณีข้างต้น
Greg Hewgill

เข้าใจแล้ว. และถ้าใช้ 'split ()' กับสตริงนี้จะแบ่งตามค่าเริ่มต้นหรือไม่?
MadPhysicist

1
@MadPhysicist ค่าเริ่มต้นสำหรับ. split () คือการแบ่งตามช่องว่างและขึ้นบรรทัดใหม่เป็นช่องว่าง
Greg Hewgill

1
ฉันเคยใช้สิ่งนี้มาก่อนและใช้งานได้ดี สองสิ่งที่ต้องระวัง: การเยื้อง (ช่องว่าง) ในบรรทัดอื่น ๆ จะรวมอยู่ด้วย หากสตริงแบบยาวถูกยกเลิกโดย"ไม่มีผลดีเพราะสิ่งทั้งหมดจะจบลงด้วย"""" ข้อผิดพลาดทางไวยากรณ์
Nagev

9

ไม่มีสิ่งนั้น ดูเหมือนว่าคุณต้องการ "ที่นี่เอกสาร" ใน Perl และเชลล์ แต่ Python ไม่มี

การใช้สตริงดิบหรือสตริงหลายบรรทัดหมายความว่ามีสิ่งที่ต้องกังวลน้อยลงเท่านั้น หากคุณใช้สตริงดิบคุณยังคงต้องแก้ไขเทอร์มินัล "\" และด้วยโซลูชันสตริงใด ๆ คุณจะต้องกังวลเกี่ยวกับการปิด ", ',' '' หรือ" "" หากรวมอยู่ในข้อมูลของคุณ .

นั่นคือไม่มีทางที่จะมีสตริง

 '   ''' """  " \

จัดเก็บอย่างถูกต้องในตัวอักษรสตริง Python ใด ๆ โดยไม่ต้องมีการหลบหนีภายใน



1

(สมมติว่าคุณไม่จำเป็นต้องป้อนสตริงจากภายในรหัส Python โดยตรง)

เพื่อหลีกเลี่ยงปัญหาที่ Andrew Dalke ชี้ให้เห็นเพียงพิมพ์สตริงตามตัวอักษรลงในไฟล์ข้อความจากนั้นใช้สิ่งนี้

input_ = '/directory_of_text_file/your_text_file.txt' 
input_open   = open(input_,'r+')
input_string = input_open.read()

print input_string

สิ่งนี้จะพิมพ์ข้อความตามตัวอักษรของสิ่งที่อยู่ในไฟล์ข้อความแม้ว่าจะเป็น;

 '   ''' """  “ \

ไม่สนุกหรือดีที่สุด แต่มีประโยชน์โดยเฉพาะอย่างยิ่งถ้าคุณมีโค้ด 3 หน้าซึ่งจะต้องมีการหลีกเลี่ยงอักขระ


-1

ถ้า string เป็นตัวแปรให้ใช้. วิธีการreprมัน:

>>> s = '\tgherkin\n'

>>> s
'\tgherkin\n'

>>> print(s)
    gherkin

>>> print(s.__repr__())
'\tgherkin\n'

นั่นไม่ถือว่าเป็นรูปแบบที่ไม่ดีใช่หรือไม่?
shah.shah

อะไร gherkins?
markling

1
คุณสามารถใช้repr(s)แทนเพื่อสไตล์ที่ดีขึ้น
xuiqzy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.