พิจารณา:
>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'
แล้วเราจะได้รับใบเสนอราคาอย่างไร แต่ไม่ใช่เครื่องหมายทับ?
และโปรดอย่าแนะนำ r'what"ever'
เพราะคำถามจะกลายเป็นว่าเรารวมคำพูดทั้งสองประเภทได้อย่างไร?
พิจารณา:
>>> r"what"ever"
SyntaxError: invalid syntax
>>> r"what\"ever"
'what\\"ever'
แล้วเราจะได้รับใบเสนอราคาอย่างไร แต่ไม่ใช่เครื่องหมายทับ?
และโปรดอย่าแนะนำ r'what"ever'
เพราะคำถามจะกลายเป็นว่าเรารวมคำพูดทั้งสองประเภทได้อย่างไร?
คำตอบ:
หากคุณต้องการใช้เครื่องหมายคำพูดคู่ในสตริง แต่ไม่ใช่เครื่องหมายคำพูดเดี่ยวคุณสามารถใช้เครื่องหมายคำพูดเดี่ยวเป็นตัวคั่นแทน:
r'what"ever'
หากคุณต้องการคำพูดทั้งสองประเภทในสตริงของคุณให้ใช้สตริงที่ยกมาสามตัว:
r"""what"ev'er"""
หากคุณต้องการรวมสตริงที่ยกมาสามตัวทั้งสองชนิดในสตริงของคุณ (เป็นกรณีที่ไม่น่าเป็นไปได้อย่างยิ่ง) คุณจะไม่สามารถทำได้และคุณจะต้องใช้สตริงที่ไม่ใช่ดิบกับการ Escape
r"raw string"
C # @"@-quoted string"
และ"""triple quotes"""
r'what"ever"
ข้อผิดพลาดในการแยกวิเคราะห์หรือไม่? คุณหมายถึงr'what"ever'
?
Python มีมากกว่าหนึ่งวิธีในการสร้างสตริง ไวยากรณ์สตริงต่อไปนี้อนุญาตให้คุณใช้เครื่องหมายคำพูดคู่:
'''what"ever'''
หากคุณต้องการการอ้างอิงประเภทใด ๆ (เดี่ยวคู่และสามสำหรับทั้งสอง) คุณสามารถ "รวม" (0) สตริง:
>>> raw_string_with_quotes = r'double"' r"single'" r'''double triple""" ''' r"""single triple''' """
>>> print raw_string_with_quotes
double"single'double triple""" single triple'''
คุณยังสามารถ "รวม" (0) สตริงดิบกับสตริงที่ไม่ใช่ดิบได้:
>>> r'raw_string\n' 'non-raw string\n'
'raw_string\\nnon-raw string\n'
(0): ในความเป็นจริงตัวแยกวิเคราะห์ Python จะเชื่อมโยงสตริงและไม่ได้สร้างหลายสตริง หากคุณเพิ่มโอเปอเรเตอร์ "+" สตริงหลายสตริงจะถูกสร้างและรวมกัน
ไม่เป็นไรคำตอบคือสตริงที่ยกมาสามครั้ง:
r"""what"ever"""
เนื่องจากฉันสะดุดกับคำตอบนี้และมันช่วยฉันได้มาก แต่ฉันพบปัญหาทางวากยสัมพันธ์เล็กน้อยฉันรู้สึกว่าฉันควรช่วยคนอื่นที่อาจเกิดความหงุดหงิด สตริงที่ยกมาสามตัวใช้ได้กับสถานการณ์นี้ตามที่อธิบายไว้ แต่โปรดทราบว่าหาก "คุณต้องการในสตริงเกิดขึ้นที่ส่วนท้ายของสตริงเอง:
somestr = """This is a string with a special need to have a " in it at the end""""
คุณจะพบข้อผิดพลาดในการดำเนินการเนื่องจากเครื่องหมายคำพูด "" "(4) ในแถวทำให้เครื่องอ่านสตริงสับสนเนื่องจากคิดว่ามันถึงจุดสิ้นสุดของสตริงแล้วและพบว่า" สุ่ม "อยู่ที่นั่นคุณสามารถตรวจสอบสิ่งนี้ได้ โดยการใส่ช่องว่างลงในเครื่องหมายคำพูด 4 คำดังนี้: "" "" และจะไม่มีข้อผิดพลาด
ในกรณีพิเศษนี้คุณจะต้องใช้:
somestr = 'This.....at the end"'
หรือใช้วิธีการที่อธิบายไว้ข้างต้นในการสร้างสตริงหลาย ๆ สายโดยผสม "และ" แล้วเชื่อมต่อกันหลังจากข้อเท็จจริง
เพียงเพื่อรวมฟังก์ชันที่เข้ากันได้กับ Python f String ใหม่:
var_a = 10
f"""This is my quoted variable: "{var_a}". """
f"foo\"bar"
ดังนั้นคุณสามารถทำได้
ใช้:
dqote='"'
sqote="'"
ใช้ตัวดำเนินการ '+' และdqote
และsquote
ตัวแปรเพื่อรับสิ่งที่คุณต้องการ
ถ้าฉันต้องการsed -e s/",u'"/",'"/g -e s/^"u'"/"'"/
คุณสามารถลองทำสิ่งต่อไปนี้:
dqote='"'
sqote="'"
cmd1="sed -e s/" + dqote + ",u'" + dqote + "/" + dqote + ",'" + dqote + '/g -e s/^"u' + sqote + dqote + '/' + dqote + sqote + dqote + '/'