ฉันจะเขียน "แท็บ" ใน Python ได้อย่างไร


127

สมมติว่าฉันมีไฟล์ ฉันจะเขียน "hello" TAB "alex" ได้อย่างไร


6
แท็บหมายถึง '\ t'
Pratik

คำตอบ:


154

นี่คือรหัส:

f = open(filename, 'w')
f.write("hello\talex")

\tภายในสตริงเป็นลำดับหนีสำหรับการจัดระเบียบในแนวนอน


5
ใช้print "a\tb"ให้ฉันa (8 spaces)bอยู่ในบนcmd Windowsเหตุใดจึงพิมพ์ 8 ช่องว่างแทนอักขระแท็บ
Iulian Onofrei

คุณคาดหวังอะไรอีกบ้าง?
Simone

8
ที่จะแสดงa (tab character)b
Iulian Onofrei

@IulianOnofrei อักขระแท็บคืออักขระที่ไม่มีการพิมพ์หรือที่เรียกว่าช่องว่าง คุณไม่เห็นอะไรเลยเมื่อกดแป้น Tab เพียงแค่ย้ายข้อความไปตามจำนวนช่องว่างเริ่มต้น บางทีคุณอาจวาดตัวอักษรในสิ่งที่คุณต้องการให้ปรากฏ มัน ->?
Rick Henderson

4
@RickHenderson ไม่เป็นความจริงอักขระแท็บไม่ได้เป็นเพียงช่องว่างจำนวนหนึ่ง บางที Editor ของคุณอาจถูกกำหนดค่าให้แทรกช่องว่างในการกดแท็บ "" เป็นแท็บ "" คือช่องว่าง คุณอาจไม่เห็นความแตกต่างที่นี่ แต่เปิด Word / Libre แล้วคุณจะเห็นความแตกต่าง
Sativa

27

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

นี่คือตารางของลำดับการหลีกเลี่ยงที่มีประโยชน์มากขึ้นและคำอธิบายของผลลัพธ์จากพวกเขา

Escape Sequence       Meaning
\t                    Tab
\\                    Inserts a back slash (\)
\'                    Inserts a single quote (')
\"                    Inserts a double quote (")
\n                    Inserts a ASCII Linefeed (a new line)

ตัวอย่างพื้นฐาน

หากฉันต้องการพิมพ์จุดข้อมูลบางจุดโดยคั่นด้วยพื้นที่แท็บฉันสามารถพิมพ์สตริงนี้ได้

DataString = "0\t12\t24"
print (DataString)

ผลตอบแทน

0    12    24

ตัวอย่างสำหรับรายการ

นี่คืออีกตัวอย่างหนึ่งที่เรากำลังพิมพ์รายการในรายการและเราต้องการกระจายรายการโดยใช้ TAB

DataPoints = [0,12,24]
print (str(DataPoints[0]) + "\t" + str(DataPoints[1]) + "\t" + str(DataPoints[2]))

ผลตอบแทน

0    12    24

สตริงดิบ

โปรดทราบว่าสตริงดิบ (สตริงที่มีคำนำหน้า "r") สตริงลิเทอรัลจะถูกละเว้น สิ่งนี้ทำให้สามารถรวมลำดับอักขระพิเศษเหล่านี้ในสตริงได้โดยไม่ต้องเปลี่ยนแปลง

DataString = r"0\t12\t24"
print (DataString)

ผลตอบแทน

0\t12\t24

ซึ่งอาจเป็นผลลัพธ์ที่ไม่ต้องการ

ความยาวสตริง

นอกจากนี้ควรสังเกตด้วยว่าตัวอักษรสตริงมีความยาวเพียงอักขระเดียว

DataString = "0\t12\t24"
print (len(DataString))

ผลตอบแทน

7

สตริงดิบมีความยาว 9


\tฉันจำเป็นต้องมีช่องว่างระหว่างองค์ประกอบของฉันที่อยู่ที่ประมาณครึ่งหนึ่งของ ฉันจะทำเช่นนี้ได้อย่างไร?
seralouk


14

โดยปกติจะ\tอยู่ในอินเตอร์เฟสบรรทัดคำสั่งซึ่งจะแปลงถ่าน\tเป็นอักขระแท็บช่องว่าง

ยกตัวอย่างเช่น->hello\talexhello--->alex


9

เนื่องจากไม่ได้ระบุไว้ในคำตอบใด ๆ ในกรณีที่คุณต้องการจัดแนวและเว้นวรรคข้อความของคุณคุณสามารถใช้คุณสมบัติรูปแบบสตริงได้ (เหนือ python 2.5) แน่นอนว่า\tเป็นโทเค็น TAB ในขณะที่วิธีการที่อธิบายไว้จะสร้างช่องว่าง

ตัวอย่าง:

print "{0:30} {1}".format("hi", "yes")
> hi                             yes

อีกตัวอย่างหนึ่งจัดชิดซ้าย:

print("{0:<10} {1:<10} {2:<10}".format(1.0, 2.2, 4.4))
>1.0        2.2        4.4 

จะให้อักขระแท็บพิมพ์องค์ประกอบอาร์เรย์ 3 มิติเป็น 0 12 24 เป็น 3 แถวได้อย่างไร
ปรียาราช

เพิ่มในคำตอบ
user1767754

0

ต่อไปนี้เป็นวิธีที่แปลกใหม่ของ Python 3 ในการรับ "hello" TAB "alex" (ทดสอบด้วย Python 3.6.10):

"hello\N{TAB}alex"

"hello\N{tab}alex"

"hello\N{TaB}alex"

"hello\N{HT}alex"

"hello\N{CHARACTER TABULATION}alex"

"hello\N{HORIZONTAL TABULATION}alex"

"hello\x09alex"

"hello\u0009alex"

"hello\U00000009alex"

จริงๆแล้วแทนที่จะใช้ลำดับ Escape คุณสามารถแทรกสัญลักษณ์แท็บลงในลิเทอรัลสตริงได้โดยตรง นี่คือรหัสที่มีอักขระการกำหนดตารางเพื่อคัดลอกและลอง:

"hello alex"

หากแท็บในสตริงด้านบนไม่หายไปไหนระหว่างการคัดลอกสตริงดังนั้น "print (repr (<string from above>)" ควรพิมพ์ "hello \ talex"

ดูเอกสาร Python ตามลำดับสำหรับการอ้างอิง

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