English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Python 基础教程

Python 流程控制

Python 함수

Python 데이터 타입

Python 文件操作

Python 对象和类

Python 日期和时间

Python 高级知识

Python 参考手册

Python 문자열(String)

在本教程中,您将学习如何用Python创建、格式化、修改和删除字符串。此外,还将向您介绍各种字符串操作和函数。

Python中的字符串是什么?

字符串是字符序列。

字符只是一个符号。例如,英语具有26个字符。

计算机不处理字符,它们处理数字(二进制)。即使您可能在屏幕上看到字符,在内部它也被存储和操纵为0和1的组合。

字符到数字的这种转换称为编码,而相反的过程是解码。ASCII和Unicode是一些常用的编码。

在Python中,字符串是Unicode字符序列。引入Unicode包括所有语言中的每个字符并带来统一的编码。您可以从此处了解有关Unicode的更多信息

如何在Python中创建字符串?

可以通过将字符括在单引号或双引号中来创建字符串。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에서가장 일반적으로 사용되는데이터 타입 중 하나

두 개나 많은 문자열의 연결

두 개나 많은 문자열을 하나의 단일 문자열로 연결하는 것을 연결이라고 합니다.

+ 연산자는 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

Python의 내장 함수를 사용하여

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))

Python 문자열 형식

escape 시퀀스

문자열을 인쇄하고 싶다면-그는 말했습니다: "어디에 있어?"-단서를 사용할 수 없습니다. 이는 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 시퀀스의 목록입니다.

Python의 escape 시퀀스
escape 시퀀스설명
\newline백slash와 라인피드는 무시됩니다
\\백slash
\'단따옴표
\"쌍따옴표
\aASCII 벨소리
\bASCII 백스페이스 키
\fASCII 페이퍼
\nASCII 라인피드
\rASCII 리턴
\tASCII 세로 탭
\vASCII 가로 탭
\ooo8진 값을 가진 문자
\xHH16진 값 HH를 가진 문자

여기 몇 가지 예제가 있습니다

>>> print("C:\\Python32\\Lib)
C:\Python32\Lib
>>> print("이것은 출력됩니다\nin 두 줄에 걸쳐")
이것은 출력됩니다
두 줄에 걸쳐
>>> print("이것은 \x48\x45\x58 표현)
이것은 HEX 표현

원시 문자열은 escape 시퀀스를 무시합니다

때때로 문자열의 escape 시퀀스를 무시하고 싶을 수 있습니다. 이를 위해 그것을 문자열의 앞에 r 또는 R를 두고 두면 됩니다. 이는 원시 문자열이며, 그 안의 모든 escape 시퀀스는 무시됩니다.

>>> print("이것은 \x61 좋은 예제))
이것은 a
좋은 예제
>>> print(r"이것은 \x61 좋은 예제))
이것은 \x61 좋은 예제

format() 메서드를 사용하여 문자열을 형식화합니다

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'