Hướng dẫn how do you type special symbols in python? - làm thế nào để bạn gõ các ký hiệu đặc biệt trong python?

Tôi đang tạo ra một bộ trong Python để chứa tất cả các biểu tượng trên bàn phím của tôi, nhưng rõ ràng là một vài vấn đề. Có cách nào để đưa tất cả chúng vào đó mà không gặp vấn đề gì không?

Đây là bộ của tôi:

symbols = {`,~,!,@,#,$,%,^,&,*,(,),_,-,+,=,{,[,},},|,\,:,;,",',<,,,>,.,?,/}

Để khắc phục nhận xét hầu hết, vì trong Python

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
6 là để bình luận, tôi đã gửi đi mọi thứ như vậy:

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}

Điều này hoạt động cho nhân vật đó, nhưng bây giờ tôi đã có thể thấy một vấn đề khi tôi bắt gặp

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
7 và
symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
8. Có cách nào tốt hơn để thực hiện bộ này không?

Điểm dừng không chỉ cho phép bạn nhóm biểu thức. Chuỗi phù hợp với biểu thức trong ngoặc đơn được ghi nhớ. Nó có thể được lấy riêng biệt bằng các phương pháp đặc biệt

In [7]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [8]: re.search('\S+$', line).group()
Out[8]: 'FastEthernet0/1'
0 và
In [7]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [8]: re.search('\S+$', line).group()
Out[8]: 'FastEthernet0/1'
1. Điều này được đề cập trong tiểu mục nhóm nhóm nhóm.

  • symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
    
    9 - Bất kỳ ký tự nào ngoại trừ ký tự dòng mới

  • In [1]: cdp = '''
       ...: SW1#show cdp neighbors detail
       ...: -------------------------
       ...: Device ID: SW2
       ...: Entry address(es):
       ...:   IP address: 10.1.1.2
       ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
       ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
       ...: Holdtime : 164 sec
       ...: '''
    
    In [2]: re.search('Interface.+Port ID.+', cdp).group()
    Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
    
    0 - Bắt đầu dòng

  • In [1]: cdp = '''
       ...: SW1#show cdp neighbors detail
       ...: -------------------------
       ...: Device ID: SW2
       ...: Entry address(es):
       ...:   IP address: 10.1.1.2
       ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
       ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
       ...: Holdtime : 164 sec
       ...: '''
    
    In [2]: re.search('Interface.+Port ID.+', cdp).group()
    Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
    
    1 - kết thúc dòng

  • In [1]: cdp = '''
       ...: SW1#show cdp neighbors detail
       ...: -------------------------
       ...: Device ID: SW2
       ...: Entry address(es):
       ...:   IP address: 10.1.1.2
       ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
       ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
       ...: Holdtime : 164 sec
       ...: '''
    
    In [2]: re.search('Interface.+Port ID.+', cdp).group()
    Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
    
    2 - Bất kỳ biểu tượng nào trong ngoặc vuông

  • In [1]: cdp = '''
       ...: SW1#show cdp neighbors detail
       ...: -------------------------
       ...: Device ID: SW2
       ...: Entry address(es):
       ...:   IP address: 10.1.1.2
       ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
       ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
       ...: Holdtime : 164 sec
       ...: '''
    
    In [2]: re.search('Interface.+Port ID.+', cdp).group()
    Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
    
    3 - Bất kỳ biểu tượng nào ngoại trừ các biểu tượng trong ngoặc vuông

  • In [1]: cdp = '''
       ...: SW1#show cdp neighbors detail
       ...: -------------------------
       ...: Device ID: SW2
       ...: Entry address(es):
       ...:   IP address: 10.1.1.2
       ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
       ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
       ...: Holdtime : 164 sec
       ...: '''
    
    In [2]: re.search('Interface.+Port ID.+', cdp).group()
    Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
    
    4 - Phần tử A hoặc B

  • In [1]: cdp = '''
       ...: SW1#show cdp neighbors detail
       ...: -------------------------
       ...: Device ID: SW2
       ...: Entry address(es):
       ...:   IP address: 10.1.1.2
       ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
       ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
       ...: Holdtime : 164 sec
       ...: '''
    
    In [2]: re.search('Interface.+Port ID.+', cdp).group()
    Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
    
    5 - Biểu thức được coi là một yếu tố. Ngoài ra, chuỗi con phù hợp với một biểu thức được ghi nhớ

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'} 9#

DOT đại diện cho bất kỳ biểu tượng. Thông thường, một dấu chấm được sử dụng với các ký hiệu lặp lại

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
7 và
In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
8 để chỉ ra rằng bất kỳ ký tự nào cũng có thể được tìm thấy giữa các biểu thức nhất định.

Ví dụ: sử dụng biểu thức

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
9, bạn có thể mô tả một dòng có giao diện trong đầu ra, chi tiết hàng xóm của SH SHP chi tiết:

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'

Kết quả chỉ là một chuỗi vì dấu chấm đại diện cho bất kỳ ký tự nào ngoại trừ ký tự nguồn cấp đường. Ngoài ra, các ký tự lặp lại

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
7 và
In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
8 bằng cách mặc định nắm bắt chuỗi dài nhất có thể. Khía cạnh này được giải quyết trong các vòng loại tham lam của tiểu mục.

In [1]: cdp = ''' ...: SW1#show cdp neighbors detail ...: ------------------------- ...: Device ID: SW2 ...: Entry address(es): ...: IP address: 10.1.1.2 ...: Platform: cisco WS-C2960-8TC-L, Capabilities: Switch IGMP ...: Interface: GigabitEthernet1/0/16, Port ID (outgoing port): GigabitEthernet0/1 ...: Holdtime : 164 sec ...: ''' In [2]: re.search('Interface.+Port ID.+', cdp).group() Out[2]: 'Interface: GigabitEthernet1/0/16, Port ID (outgoing port): GigabitEthernet0/1' 0#

Ký tự

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
0 có nghĩa là sự khởi đầu của dòng. Biểu thức
In [3]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [4]: re.search('^\d+', line).group()
Out[4]: '100'
4 tương ứng với chuỗi con:

In [3]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [4]: re.search('^\d+', line).group()
Out[4]: '100'

Ký tự từ đầu dòng đến dấu hiệu (bao gồm cả pound):

In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'

In [1]: cdp = ''' ...: SW1#show cdp neighbors detail ...: ------------------------- ...: Device ID: SW2 ...: Entry address(es): ...: IP address: 10.1.1.2 ...: Platform: cisco WS-C2960-8TC-L, Capabilities: Switch IGMP ...: Interface: GigabitEthernet1/0/16, Port ID (outgoing port): GigabitEthernet0/1 ...: Holdtime : 164 sec ...: ''' In [2]: re.search('Interface.+Port ID.+', cdp).group() Out[2]: 'Interface: GigabitEthernet1/0/16, Port ID (outgoing port): GigabitEthernet0/1' 1#

Biểu tượng

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
1 đại diện cho phần cuối của một dòng.

Biểu thức

In [3]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [4]: re.search('^\d+', line).group()
Out[4]: '100'
7 mô tả bất kỳ ký tự nào ngoại trừ khoảng trắng ở cuối dòng:

In [7]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [8]: re.search('\S+$', line).group()
Out[8]: 'FastEthernet0/1'

In [3]: line = "100 aa12.35fe.a5d3 FastEthernet0/1" In [4]: re.search('^\d+', line).group() Out[4]: '100' 8#

Các biểu tượng được liệt kê trong dấu ngoặc vuông có nghĩa là bất kỳ biểu tượng nào trong số này sẽ là một trận đấu. Do đó, các thanh ghi khác nhau có thể được mô tả:

In [9]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [10]: re.search('[Ff]ast', line).group()
Out[10]: 'Fast'

In [11]: re.search('[Ff]ast[Ee]thernet', line).group()
Out[11]: 'FastEthernet'

Sử dụng dấu ngoặc vuông, bạn có thể chỉ định ký tự nào có thể gặp ở một vị trí cụ thể. Ví dụ, biểu thức

In [3]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [4]: re.search('^\d+', line).group()
Out[4]: '100'
9 mô tả các ký tự từ đầu dòng đến dấu
In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'
0 hoặc
In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'
1 (bao gồm cả chúng). Biểu thức này có thể được sử dụng để lấy tên của thiết bị:

In [12]: commands = ['SW1#show cdp neighbors detail',
    ...:             'SW1>sh ip int br',
    ...:             'r1-london-core# sh ip route']
    ...:

In [13]: for line in commands:
    ...:     match = re.search('^.+[>#]', line)
    ...:     if match:
    ...:         print(match.group())
    ...:
SW1#
SW1>
r1-london-core#

Bạn có thể chỉ định phạm vi ký tự trong ngoặc vuông. Ví dụ: bất kỳ số nào từ 0 đến 9:

In [14]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [15]: re.search('[0-9]+', line).group()
Out[15]: '100'

Letters:

In [16]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [17]: re.search('[a-z]+', line).group()
Out[17]: 'aa'

In [18]: re.search('[A-Z]+', line).group()
Out[18]: 'F'

Một số phạm vi có thể được chỉ định trong ngoặc vuông:

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
0

Biểu thức

In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'
2 mô tả ba nhóm ký hiệu được phân tách bằng một dấu chấm. Các ký tự trong mỗi nhóm có thể là các chữ cái A-F hoặc chữ số 0-9. Biểu thức này mô tả địa chỉ MAC.

Một tính năng khác của dấu ngoặc vuông là các biểu tượng đặc biệt trong dấu ngoặc vuông mất ý nghĩa đặc biệt của chúng và chỉ đơn giản là một biểu tượng. Ví dụ, một dấu chấm bên trong ngoặc vuông sẽ biểu thị một dấu chấm, không phải bất kỳ biểu tượng nào.

Biểu thức

In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'
3 mô tả ba nhóm ký hiệu:

  1. chữ cái a-f hoặc chữ số 0-9

  2. chấm hoặc chém

  3. chữ cái a-f hoặc chữ số 0-9

chấm hoặc chém

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
1

Đối với chuỗi

In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'
4, trận đấu sẽ là một chuỗi con như vậy:

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
2

Nếu ký hiệu đầu tiên trong ngoặc vuông là

In [1]: cdp = '''
   ...: SW1#show cdp neighbors detail
   ...: -------------------------
   ...: Device ID: SW2
   ...: Entry address(es):
   ...:   IP address: 10.1.1.2
   ...: Platform: cisco WS-C2960-8TC-L,  Capabilities: Switch IGMP
   ...: Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1
   ...: Holdtime : 164 sec
   ...: '''

In [2]: re.search('Interface.+Port ID.+', cdp).group()
Out[2]: 'Interface: GigabitEthernet1/0/16,  Port ID (outgoing port): GigabitEthernet0/1'
0, thì trận đấu sẽ là bất kỳ biểu tượng nào ngoại trừ các biểu tượng trong ngoặc.

In [5]: prompt = 'SW1#show cdp neighbors detail' In [6]: re.search('^.+#', prompt).group() Out[6]: 'SW1#' 6#

Trong trường hợp này, biểu thức mô tả mọi thứ ngoại trừ các chữ cái.

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
3

Biểu tượng ống hoạt động như ‘hoặc

In [5]: prompt = 'SW1#show cdp neighbors detail' In [6]: re.search('^.+#', prompt).group() Out[6]: 'SW1#' 8#

Điểm dừng được sử dụng để nhóm biểu cảm. Như trong các biểu thức toán học, dấu ngoặc đơn có thể được sử dụng để chỉ ra các yếu tố nào mà hoạt động được áp dụng.

Ví dụ: Biểu thức

In [5]: prompt = 'SW1#show cdp neighbors detail'

In [6]: re.search('^.+#', prompt).group()
Out[6]: 'SW1#'
9 mô tả ba ký tự: chữ số, sau đó là chữ cái hoặc chữ số và chữ số:

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
4

Điểm dừng cho phép chỉ ra biểu thức nào là một thực thể. Điều này đặc biệt hữu ích khi sử dụng các ký hiệu lặp lại:

symbols = {'`','~','!','@','#','$','%','^','&','*','(',')','_','-','+','=','{','[','}','}','|','\',':',';','"',''','<',',','>','.','?','/'}
5

Điểm dừng không chỉ cho phép bạn nhóm biểu thức. Chuỗi phù hợp với biểu thức trong ngoặc đơn được ghi nhớ. Nó có thể được lấy riêng biệt bằng các phương pháp đặc biệt

In [7]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [8]: re.search('\S+$', line).group()
Out[8]: 'FastEthernet0/1'
0 và
In [7]: line = "100     aa12.35fe.a5d3    FastEthernet0/1"

In [8]: re.search('\S+$', line).group()
Out[8]: 'FastEthernet0/1'
1. Điều này được đề cập trong tiểu mục nhóm nhóm nhóm.