English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,您将学习如何用Python创建、格式化、修改和删除字符串。此外,还将向您介绍各种字符串操作和函数。
字符串是字符序列。
字符只是一个符号。例如,英语具有26个字符。
计算机不处理字符,它们处理数字(二进制)。即使您可能在屏幕上看到字符,在内部它也被存储和操纵为0和1的组合。
字符到数字的这种转换称为编码,而相反的过程是解码。ASCII和Unicode是一些常用的编码。
在Python中,字符串是Unicode字符序列。引入Unicode包括所有语言中的每个字符并带来统一的编码。您可以从此处了解有关Unicode的更多信息。
可以通过将字符括在单引号或双引号中来创建字符串。Python中甚至可以使用三引号,但通常用于表示多行字符串和文档字符串。
# 下面这些都是等价的 my_string = 'Hello' print(my_string) my_string = "Hello" print(my_string) my_string = '''Hello''' print(my_string) # 三引号字符串可以扩展多行 my_string = "Hello, welcome to the world of Python" print(my_string)
运行该程序时,输出为:
Hello Hello Hello Hello, welcome to the world of Python
单个字符可以通过索引访问,字符序列可以通过切片访问。索引从0开始。尝试访问超出索引范围的字符将引发IndexError。索引必须是整数。不能使用float或其他类型,这将导致TypeError。
Python은 시퀀스에 음수 인덱스를 허용합니다.
인덱스-1마지막 항목을 나타냅니다.-2마지막 두 번째 항목을 나타냅니다. 이와 같이 슬라이싱 연산자(콜론)를 사용하여 문자열의 일련의 항목에 접근할 수 있습니다.
str = 'w'3codebox.com' print('str = ', str) # 첫 번째 문자 print('str[0] = ', str[0]) # 마지막 문자 print('str[-1] = ', str[-1) # 두 번째부터 다섯 번째 문자까지의 슬라이싱 print('str[1:5] = ', str[1:5) # 슬라이싱은 인덱스에서 시작됩니다6개부터 마지막 인덱스까지2개 문자 print('str[5:-2] = ', str[5:-2)
출력 결과:
str = ''oldtoolbag.com str[0] = ''n str[-1] = ''m str[1:5] = ''hooo str[5:-2] = ''
범위를 벗어난 인덱스나 십진수를 사용하여 접근하려고 시도하면 오류가 발생합니다.
# 인덱스는 범위 내에 있어야 합니다 >>> my_string[15] >>> print('He said, "What's there?"') IndexError: string index out of range # 인덱스는 정수여야 합니다 >>> my_string[1.5] >>> print('He said, "What's there?"') TypeError: string indices must be integers
인덱스가 요소 사이에 위치한다고 생각하면 가장 잘 시각화할 수 있습니다. 예를 들어 다음과 같습니다.
범위에 접근하려면 인덱스가 필요하며, 이 인덱스는 문자열에서 일부를 잘라낼 것입니다.
문자열은 불변합니다. 이는 문자열의 요소가 할당된 후에는 변경할 수 없다는 것을 의미합니다. 다른 문자열을 동일한 이름으로 다시 할당할 수 있습니다.
>>> my_string = 'w'3codebox.com' >>> my_string[5] = 'a' >>> print('He said, "What's there?"') TypeError: 'str' object does not support item assignment >>> my_string = 'Python' >>> my_string 'Python'
문자열 내의 문자를 지울 수 없습니다. 그러나 del 키워드를 사용하여 전체 문자열을 완전히 지울 수 있습니다.
>>> del my_string[1] >>> print('He said, "What's there?"') TypeError: 'str' object doesn't support item deletion >>> del my_string >>> my_string >>> print('He said, "What's there?"') NameError: name 'my_string' is not defined
문자열은 많은 작업을 수행할 수 있어 이를Python에서가장 일반적으로 사용되는데이터 타입 중 하나。
두 개나 많은 문자열을 하나의 단일 문자열로 연결하는 것을 연결이라고 합니다.
+ 연산자는 Python에서 연결 작업을 수행합니다. 단순히 두 문자열 텍스트를 함께 작성하면, 그들과 함께 연결할 수도 있습니다.
* 연산자는 문자열을 특정 횟수로 반복할 수 있습니다.
str1 = 'Hello' str2 ='World!' # using + print('str1 + str2 =, str1 + str2) # using * print('str1 * 3 =, str1 * 3)
두 문자열 텍스트를 함께 작성하면+연산자를 사용하여 그들과 함께 연결할 수 있습니다.
다른 줄에 문자열을 연결하려면 괄호를 사용할 수 있습니다.
>>> # 두 문자열 텍스트를 함께 사용하세요 >>> 'Hello ''World!' 'Hello World!' >>> # 사용하려면 괄호를 사용하세요 >>> s = ('Hello ' ... 'World') >>> s 'Hello World'
사용하여for 루프를 사용하여문자열을 순회할 수 있습니다. 이는 문자열에 있는 'l'의 개수를 계산하는 예제입니다.
count = 0 for letter in 'Hello World': if(letter == 'l'): count += 1 print(count, 'letters found')
문자열에 있는 부분 문자열이 있는지 테스트할 수 있습니다.
>>> 'a' in 'program' True >>> 'at' not in 'battle' False
sequence와 string의 다양한 내장 함수를 사용할 수 있습니다.
일반적으로 enumerate()와 len() 함수를 사용합니다. enumerate() 함수는: 인쇄 대상 객체를 반환합니다. 이는 문자열의 모든 항목의 인덱스와 값을 포함한 튜플로 구성됩니다. 이는 반복에 매우 유용합니다.
또한, len() 함수는 문자열의 길이(문자 수)를 반환합니다.
str = 'cold' # enumerate() list_enumerate = list(enumerate(str)) print('list(enumerate(str) = ', list_enumerate) # 문자 수 print('len(str) = ', len(str))
문자열을 인쇄하고 싶다면-그는 말했습니다: "어디에 있어?"-단서를 사용할 수 없습니다. 이는 SyntaxError 텍스트 자체에 단서가 포함되어 있음을 의미합니다.
>>> print("He said, "What's there?"") >>> print('He said, "What's there?"') ... >>> print('He said, "What's there?"') >>> print('He said, "What's there?"') ...
SyntaxError: invalid syntax
이 문제를 해결하는 방법 중 하나는 세 개의 단따옴표를 사용하는 것입니다. 또한, escape 시퀀스를 사용할 수 있습니다.
escape 시퀀스는 백slash로 시작하며, 다른 방식으로 해석됩니다. 단따옴표로 문자열을 사용하면 문자열 내의 모든 단따옴표를 escape해야 합니다. 쌍따옴표도 마찬가지입니다. 이는 위의 텍스트를 표현하는 방법입니다. # 세 개의 단따옴표 사용 # escape 단따옴표 print('He said, "What\'s there?"') # escape 쌍따옴표 print("He said, \"What's there?\"")
이것은 Python이 지원하는 모든 escape 시퀀스의 목록입니다.
escape 시퀀스 | 설명 |
---|---|
\newline | 백slash와 라인피드는 무시됩니다 |
\\ | 백slash |
\' | 단따옴표 |
\" | 쌍따옴표 |
\a | ASCII 벨소리 |
\b | ASCII 백스페이스 키 |
\f | ASCII 페이퍼 |
\n | ASCII 라인피드 |
\r | ASCII 리턴 |
\t | ASCII 세로 탭 |
\v | ASCII 가로 탭 |
\ooo | 8진 값을 가진 문자 |
\xHH | 16진 값 HH를 가진 문자 |
여기 몇 가지 예제가 있습니다
>>> print("C:\\Python32\\Lib) C:\Python32\Lib >>> print("이것은 출력됩니다\nin 두 줄에 걸쳐") 이것은 출력됩니다 두 줄에 걸쳐 >>> print("이것은 \x48\x45\x58 표현) 이것은 HEX 표현
때때로 문자열의 escape 시퀀스를 무시하고 싶을 수 있습니다. 이를 위해 그것을 문자열의 앞에 r 또는 R를 두고 두면 됩니다. 이는 원시 문자열이며, 그 안의 모든 escape 시퀀스는 무시됩니다.
>>> print("이것은 \x61 좋은 예제)) 이것은 a 좋은 예제 >>> print(r"이것은 \x61 좋은 예제)) 이것은 \x61 좋은 예제
string 객체와 함께 사용되는 format() 메서드는 매우 일반적이며, 문자열 형식화에 매우 강력한 기능을 제공합니다. 형식 문자열은 대括号{}를 사용하여 대체 필드 또는 대체된 필드로 사용됩니다.
우리는 위치 매개변수나 키워드 매개변수를 사용하여 순서를 지정할 수 있습니다.
# 기본(암시적) 순서 default_order = "{}, {} and {}".format('John','Bill','Sean') print('\n--- Default Order ---') print(default_order) # 사용자 정의 위치 매개변수 정렬 positional_order = "{1}, {0} and {2".format('John','Bill','Sean') print('\n--- Positional Order ---') print(positional_order) # 사용자 정의 키워드 매개변수 정렬 keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean') print('\n--- Keyword Order ---') print(keyword_order)
format() 메서드는 선택적인 형식 규약을 가질 수 있습니다. 그들은 콜론(:)과 필드 이름으로 분리됩니다. 예를 들어, 우리는 공백 내에서 왼쪽 정렬<, 오른쪽 정렬>, 또는 ^을 사용하여 문자열을 가운데 정렬할 수 있습니다. 또한, 정수를 이진, 십육진 등으로 형식화하고, 소수점 숫자는 내림이나 지수 형식으로 표시할 수 있습니다. 많은 형식을 사용할 수 있습니다. 여기를 방문하여format()를 가져오기메서드사용 가능한모든문자 형식。
>>> # 정수 형식화 >>> "Binary representation of {0} is {0:b}".format(12) 'Binary representation of 12 is 1100' >>> # 소수점 숫자 형식화 >>> "Exponent representation: {0:e}".format(1566.345) 'Exponent representation: 1.566345e+03' >>> # 내림 >>> "One third is: {0:.3f}".format(1/3) 'One third is: 0.333' >>> # 문자 정렬 >>> "|{:<10|{:^10|{:}>10|".format('butter','bread','ham') '|butter | bread | ham|'
우리는 C 프로그래밍 언어에서 사용된 오래된 스타일의 sprintf()와 같이 문자열을 포맷할 수 있습니다. 이 작업을 완료하기 위해 % 연산자를 사용합니다.
>>> x = 12.3456789 >>> print('The value of x is %3.2f' %x) x의 값은 12.35 >>> print('The value of x is %3.4f' %x) x의 값은 12.3457
문자열 객체에는 많은 메서드가 사용 가능합니다. 위에 언급된 format() 메서드는 그 중 하나입니다. 일반적으로 사용되는 메서드는 lower()、upper()、join()、split()、find()、replace() 등이며, 여기에는 모든 메서드가 포함됩니다.파이썬에서 문자열을 처리하는 내장 메서드。
>>> "w3codebox".lower() 'w3codebox' >>> "w3codebox".upper() 'w3codebox' >>> "This will split all words into a list".split() ['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list'] >>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string']) 'This will join all words into a string' >>> 'Happy New Year'.find('ew') 7 >>> 'Happy New Year'.replace('Happy','Brilliant') 'Brilliant New Year'