루아에서 문자열은 큰따옴표 “~” 혹은 작은 따옴표 ‘~’ 로 둘러싸인 문자들의 집합이다. 단문자 자료형은 없으며 작은 따옴표도 큰 따옴표와 동일하게 문자열을 입력하는데 사용된다.


print("Hello world")
print('hi Lua')

실행 결과

Hello world
hi Lua


큰 따옴표를 사용한 문자열 내부에서 작은 따옴표는 문자로 취급되고 반대의 경우도 마찬가지이다.


a = "I'am a programmer."
b = 'He said "Hi."'
print(a)
print(b)

실행 결과

I'am a programmer.
He said "Hi."


문자열 내에서 다음과 같은 특수 문자를 사용할 수 있다.


표 1.5.1 문자열 내의 특수문자

특수문자

표시 문자

\n

줄바꿈

\t

\r

줄 맨앞으로

\b

한 문자 뒤로

\\

‘\’문자 자체를 표시


예를 들면 다음과 같다.


print('Table\n-----------------------')
print('1\t2\t3')
print('one\ttwo\tthree')
print('하나\t둘\t셋')
print('-----------------------')

실행 결과

Table
-----------------------
1 2 3
one two three
하나
-----------------------


 문자열과 함께 많이 쓰이는 기본 연산자로서 ‘..’ 가 있는데 두 문자열을 병합하는 기능을 수행한다.


a = 'hello '
b = 'world'
c = a .. b
d = 22
print(c)
print('d='..d)

실행 결과

hello world
d=22


 위 예제와 같이 ‘..’ 연산자는 print()함수 내에서 여러 문자열을 합쳐서 표시하는데 많이 사용된다.



'프로그래밍언어.Lib > 루아(Lua)' 카테고리의 다른 글

루아(Lua)의 조건분기문 if ~ then ~ end  (0) 2016.01.27
루아(Lua)의 nil  (0) 2016.01.26
루아(Lua)의 부울형과 조건연산자  (3) 2016.01.26
루아의 산술 연산자  (0) 2016.01.25
루아(Lua)의 숫자형  (0) 2016.01.25
Posted by 살레시오
,

 C# 6.0은 이전 버전의 메이져 업그레이드가 아니라 사용자 편의성을 높일 자잘한 기능들이 추가되었는데 문자열 보간도 그 중 하나이다. 예를 들어서 문자열의 중간에 변수의 값을 넣고 싶다면 String.Format()함수를 이용하였다.


str = String.Format(“da is {0}.\r\n”, da);


또는 Console.Writeln함수에서도 이런 형식을 입력할 수 있다.


Console.Writeln(“da is {0}.\r\n”, da);


C# 6.0에서는 이것보다 더 간단한 표현식을 제공한다.


str = $“da is {da}.\r\n”;
Console.Writeln($“da is {da}.\r\n”);


위와 같이 문자열 앞에 $를 붙이면 문자열 내부의 {...}안에 변수가 바로 올 수 있다. 이것을 문자열 보간(string interpolation)이라고 하고 컴파일 시에 내부적으로 String.Format() 함수를 이용한 코드로 적절하게 해석이 된다. 이 새로운 문법이 보기에 훨씬 더 간결하다.


 이 방법으로 정렬과 표시 방법도 옵션으로 지정할 수 있다. 예를 들어서 이전에는 다음과 같이 코딩했던 것을

 

for (int ctr = 0; ctr < names.Length; ctr++)
{
 Console.WriteLine("{0,-20} {1,5:N1}", names[ctr], hours[ctr]);
}

유사하게 문자열 앞에 ‘$’를 붙이고 {...} 안에서는 번호(인덱스) 대신 변수명으로 대신하여 사용할 수 있다.


for (int ctr = 0; ctr < names.Length; ctr++)
{
  Console.WriteLine($"{names[ctr],-20} {hours[ctr],5:N1}");
}

여기에서 첫 번째 변수는 20칸 좌정렬이 되고 두 번째 변수는 5칸 우정렬에  N1형식으로 표시된다.



Posted by 살레시오
,

 이전 포스트에서 설명한 포장형(wrapper class)의 생성자를 이용하면 문자열을 기본형 값으로 바꿀 수 있다.


[표 1] 포장형의 기본형 값을 반환하는 객체 메쏘드

메소드명

기능

byteValue()

byte값을 반환한다.

shortValue()

short값을 반환한다.

intValue()

int값을 반환한다.

longValue()

long값을 반환한다.

floatValue()

float값을 반환한다.

doubleValue()

double값을 반환한다.


예를 들어서 다음과 같이 Integer 형 객체에서 다양한 기본형 값을 얻을 수 있다.


package tut02;
public class Tut02 {
   public static void main(String[] args) {
       int ia = new Integer("1234567").intValue();
       float fa = new Integer("1234567").floatValue();
       short sa = new Integer("1234567").shortValue(); //(*)

       System.out.println(ia);
       System.out.println(fa);
       System.out.println(sa);
   }
}
실행 결과
1234567
1234567.0
-10617


위의 (*)에서와 같이 손실 변환(lossy conversion)의 경우에도 별다른 경고나 오류를 발생하지 않는다. 따라서 같은 형의 데이터의 변환에만 쓰는 것이 바람직하다.


 포장형으로 부터 기본형 값을 얻는 메소드로 parse 로 시작하는 정적 메소드들이 있다. 이 메소드를 이용하면 정수형을 반환하는 메소드는 기수를 지정해 줄 수도 있다.


[표 2] 포장형의 기본형 값을 반환하는 메쏘드

메소드명

기능

Byte.parseByte(String)

Byte.parseByte(String, radix)

문자열을 byte값으로 변환한다.

기수 radix인 문자열을 byte값으로 변환한다.

Short.parseShort(String)

Short.parseShort(String, radix)

문자열을 short값으로 변환한다.

기수 radix인 문자열을 short값으로 변환한다.

Integer.parseInt(String)

Integer.parseInt(String, radix)

문자열을 int값으로 변환한다.

기수 radix인 문자열을 int값으로 변환한다.

Long.parseLong(String)

Long.parseLong(String, radix)

문자열을 long값으로 변환한다.

기수 radix인 문자열을 long값으로 변환한다.

Float.parseFloat(String)

문자열을 float값으로 변환한다.

Double.parseDouble(String)

문자열을 double값으로 변환한다.


실제 프로그램에서는 주로 [표 2]의 정적 메소드를 자주 사용하게 된다.


package tut02;
public class Tut02 {
   public static void main(String[] args) {
       int ia = Integer.parseInt("1234567");
       int ib = Integer.parseInt("11110010",2); //이진수
       int ic = Integer.parseInt("1ab3f",16); //십육진수

       System.out.println(ia);
       System.out.println(ib);
       System.out.println(ic);
   }
}
실행 결과
1234567
242
109375


 포장형 객체를 반환하는 valueOf() 이라는 정적 메소드도 있다.


[표 3] 문자열로 부터 포장형 객체를 반환하는 메쏘드

메소드명

기능

Byte.valueOf(String)

Byte.valueOf(String,radix)

Byte.valueOf(byte)

문자열을 Byte 객체로 변환

기수 radix인 문자열을 Byte 객체로 변환한다.

byte값을 Byte 객체로 박싱

Short.valueOf(String)

Short.valueOf(String,radix)

Short.valueOf(short)

문자열을 Short 객체로 변환

기수 radix인 문자열을 Short 객체로 변환한다.

short값을 Short 객체로 박싱

Integer.valueOf(String)

Integer.valueOf(String,radix)

Integer.valueOf(int)

문자열을 Integer 객체로 변환

기수 radix인 문자열을 Interger 객체로 변환한다.

int값을 Interger 객체로 박싱

Long.valueOf(String)

Long.valueOf(String,radix)

Long.valueOf(long)

문자열을 Long 객체로 변환

기수 radix인 문자열을 Long 객체로 변환한다.

long값을 Long 객체로 박싱

Float.valueOf(String)

Float.valueOf(float)

문자열을 Float 객체로 변환한다.

float값을 FLoat 객체로 박싱

Double.valueOf(String)

Double.valueOf(float)

문자열을 Double 객체로 변환한다.

float값을 Double 객체로 박싱


예를 들어서


int ia = Integer.valueOf("1234567");


이렇게 하면 자동 언박싱이 일어나서 변수 ia에 1234567이란 값이 저장된다. 하지만 parseInt()함수보다는 당연히 성능이 떨어진다.




Posted by 살레시오
,

 자바에서는 문자열(string)을 처리할 수 있는 String 클래스를 제공한다. 클래스에 대해서는 아직 설명하지 않았지만 문자열은 간단하게라도 알고 넘어가야 한다. 자바에서 문자열은 기본형이 아니라 참조형이고 큰따옴표를 이용하여 표현한다. 그리고 문자열 변수를 선언/초기화하는 것은 String은 클래스이지만 기본형의 변수를 선언하고 초기화하는 방법과 동일하다.


String name; //문자열 선언
name = “홍길동”; // 문자열 초기화

String title = “선생님”;//선언과 동시에 초기화


다음과 같이 화면에 출력할 수도 있다.


System.out.println(name); // name 문자열의 내용이 화면에 출력된다.


두 개의 문자열을 서로 연결하는 데 ‘+’연산자를 이용할 수도 있다.


String fullName = name + title; // 두 문자열 연걸
String sayHi = “안녕하세요. “ + name;
String sayHello = “안녕하세요. “ + name + title; //세 개 이상도 연결 가능


다음과 같이 System.out.println() 함수에 문자열 연결식을 직접 입력할 수도 있다.


System.out.println(“안녕하세요. “+name+”씨.”);


이렇게 하면 불필요한 문자열 변수를 생성하지 않고 직접 연결된 문자열을 화면에 출력할 수 있다.


 어떤 기본형 변수의 값을 출력할 때에도 System.out.println()함수를 사용할 수 있다.


double da = 11.2;
System.out.println(da);


함수 System.out.println() 는 문자열을 인자로 주어야 하는데 이경우 변수값 da는 내부적으로 문자열로 자동으로 변환되어서 System.out.println()에 그 문자열을 넘겨준다. 따라서 다음과 같이 연결하는 것도 가능하다.


double da = 11.2;
System.out.println(“da 값은 “ + da + “입니다.”);


이 경우 연결이 일어나기 전에 da값은 문자열로 변환되어 세 개의 문자열을 연결한 새로운 문자열이 System.out.println()에 인자로 넘어가는 것이다.




Posted by 살레시오
,

 MATLAB에서 행렬의 원소로 문자열을 사용하는 것이 가능하다. 문자열은 작은 따옴표나 큰따옴표로 묶는다.


>> A=['hi']
A = hi
>> B="there"
B = there


두 번째 예를 보면 문자열은 그 자체로 행벡터임을 알 수 있다.. 벡터의 각 요소는 하나의 문자인 것이다. 따라서 행렬의 인덱싱도 가능하다.


>> size(B)
ans =
  1   5

>> B(3)
ans = e

>> B(1)="T"
B = There


따라서 다음과 같이 두 행렬을 한 행렬로 표현함으로써 문자열의 합성도 가능하다.


>> C=[A B]
C = hiThere


문자열 행렬도 생성 가능한데 문자열 자체가 행벡터이므로 한 행에 하나의 문자열을 지정해 주면 된다.


>> D=['hi';'there']
D =
hi
there

>> size(D)
ans =
  2   5


위의 예에서 행렬 D는 첫 번째 행의 크기는 2(문자)이고 두번째 행의 크기는 5(문자)인데 행렬이 구성되었다. 이경우 빈 곳은 공백문자로 채워진다.


 문자열 관련 함수들은 다음과 같다.


[표 1] 문자열 관련 함수들

함수

기능

strcat(s1, s2, …)

strvcat(s1,s2,...)

문자열들을 하나의 행벡터로 합친다.

문자열들을 한 행렬로 합친다.(각 문자열을 별도의 행으로 지정)

char(x)

숫자(아스키코드) 행렬로 부터 문자열을 생성한다.

ischar(x)

x가 문자열이면 논리1(true)반

num2str(x)

숫자를 문자열로 바꾼다.

sprintf(FORMAT, A,B,...)

C 언어의 printf() 와 같은 기능을 수해하여 문자열 생성

lower(s)

upper(s)

문자열을 소문자로 변환

문자열을 대문자로 변환

strcmp(s1,s2)

s1과 s2가 같다면 논리1(true)반환, 그렇지 않다면 논리0(flase)반환

findstr(s1,s2)

둘 중 긴 문자열에서 짧은 문자열이 시작되는 인덱스 반환



Posted by 살레시오
,

 Scilab명령어를 담은 문자열을 실행시킬 수 있는 명령어들이 있다. 세 개가 있는데 다음 표에 정리하였다.


[표 1] 문자열을 실행시키는 함수들

함수명

기능

execstr

Scilab 명령 문자열을 실행한다.

eval

evstr

Scilab expression 실행(행렬 반환)

위와 기능은 동일하나 에러를 traping할 수 있음

 먼저 execstr()은 Scilab 명령을 담은 문자열을 실행하는 것이다. (MATLAB의 eval 함수의 기능에 해당됨.)

>> execstr('a=1+sin(%pi/2)')
>> a
a  =
    2.  

이 예에서 보듯이 execstr()함수는 세미콜론이 붙지 않은 명령이라도 그 결과를 콘솔창에 표시하지 않는다. 만약 문자열에 명령 에러가 있다면 execstr()함수는 실행이 멈추게 된다. 다음 예를 보자.

>> execstr('a=2#4'), c=%i
 a=2#4
     !--error 276
Missing operator, comma, or semicolon.
in  execstr instruction    called by :  
execstr('a=2#4'), c=%i

이 예에서 ‘a=2#4’라는 명령은 문법 오류가 있으므로 거기서 실행이 멈춰버리고 에러메서지를 밷는다. 따라서 c=%i 라는 그 뒤의 명령은 실행되지 않는다.


만약 실행을 멈추지 않고 에러의 발생 여부를 처리하고 싶다면 다음 예와 같이 옵션을 사용하면 된다.


>> ier = execstr(['a#2','b=%pi'], 'errcatch','n'), c=%i
ier  =
   4.  
c  =
   i    

   

두 번째 인수로 ‘errcatch’ 를 주었는데 이것은 에러가 발생하면 실행을 멈추지 말고 단순히  ier에 그 결과를 반환하라는 것이다. 세 번째 인수가 ‘n’ 이라면 에러의 개수를 ‘m’ 이라면 에러메세지를 반환하다. 이 경우는 execstr()함수 뒤의 c=%i 가 실행된다는 점이 앞으 경우와 다르다. execstr()함수에는 두개의 명령 ‘a#2’ 와 ‘b=%pi’ 가 들어갔는데 두 번째 명령은 오류가 없음에도 첫 번째 명령에 에러가 있으면 두 번째 것이 실행되지 않고 에러를 캐치하고 넘어가 버린다. 따라서 변수 b도 생성되지 않고 c만 생성이 된 것이다.

 함수 eval()과 evstr()은 문자열 행렬의 값을 구해서 행렬로 반환해 주는 함수이다. 두 함수의 차이점은 에러를 캐치할 수 있느냐(evstr 함수), 없으냐(eval)이다. 예를 들면 다음과 같다.

>> a=%i; b=%e;
>> A=eval(['a' 'b'; 'a+b' 'a-b'])
A  =
   i                  2.7182818        
   2.7182818 + i    - 2.7182818 + i  


 evstr()함수는 두 번째 출력 인수를 지정해 주면 그것에 에러의 번호를 반환하고 함수 자체는 실행이 멈추지 않고 정상적으로 종료된다.


>> A=eval(['a' 'c'; 'a+b' 'a-b']); d=10;
!--error 4
Undefined variable: c
at line       3 of function %eval called by :  
at line      20 of function eval called by :  
A=eval(['a' 'c'; 'a+b' 'a-b']); d=10;

 

이 예에서 eval()함수 내부의 c변수는 없는 변수이므로 에러를 발행하고 실행이 거기서 멈춰버린다. 따라서 뒤에 있는 d=10; 이라는 명령은 실행되지 않는다. 반면에 다음 예를 보자.

>> [A,ier]=evstr(['a' 'c'; 'a+b' 'a-b']); d=10;
>>d
d  =
   10.

이 예에서 evstr()은 eval()과 같은 일을 수행하지만 만약 에러가 발행한다면 두 번째 출력인수 ier에 에러의 코드를 반환하고 정상적으로 종료한다. 따라서 그 뒤에 오는 명령인 d=10;도 정상적으로 수행된다.



Posted by 살레시오
,

 함수  part() 는 문자열의 일부분을 추출하는 기능을 수행한다.

       ❶ part(str, n) // 문자열 str의 n번째 문자 추출

       ❷ part(str, n1:n2) // 문자열 str의 n1번째 부터 n2번째 까지 추출

       ➌ part(str,[n1, n2, n3…]) // 문자열 str의 n1, n2, n3… 번째 문자들을 추출하여 단일 문자열로 반환

예를 들면 다음과 같다.


>> str = "This is a sample string."
str  =
This is a sample string.  

>> strp1 = part(str, 4)
strp1  =
 s  

>> strp1 = part(str, 6:9)
strp1  =
 is a  

>> strp1 = part(str, [11 13 15 19])
strp1  =
 smlt  

만약 입력문자의 크기가 넘어가는 문자열의 범위를 지정하면 공백 문자로 채워진다. 이 예제에서 str의 길이는 24이다. 다음 예는 24를 넘어가는 인덱스에 대해서는 공백문자로 채워짐을 보이고 있다.

>> '|'+part(str,20:30)+'|'
ans  =
|ring.      |

 함수 grep(vstr1, str2)은 문자열 벡터 vstr1 의 요소(문자열) 중에서 str2가 포함된 것의 인덱스를 반환한다. 예를 들어서 다음과 같이 문자열 벡터가 정의되었다고 하자.


>> str1 = ['abcdefghijk', 'xyz', 'jklm']

이후에 grep()함수를 사용했을 때의 결과는 다음과 같다.


>> grep(str1, 'jk')
ans  =
   1.    3.  

 

즉, str1의 첫 번째와 세 번째 요소(문자열)에 ‘jk’라는 문자열이 포함되었다는 것이다. 검색할 문자열이 두 개 이상이라면 이것들을 요소로 하는 문자열 벡터를 두 번째 인수로 넣어주면 된다.

>> grep(str1, ['jk','y'])
ans  =
     1.    2.    3.  


이 예에서는 str1 문자열 벡터의 요소 중에서 ‘jk’ 나 ‘y’ 를 포함하는 것의 인덱스를 구한다.

 함수 strindex(str1, vstr2)는 문자열 str1에서 vstr2 가 시작되는 지점의 인덱스를 구해준다.


>> str1 = '[12.34;56.789;10.123]'
str1  =
 [12.34;56.789;10.123]  

>> strindex(str1, ';')
ans  =
    7.    14.  

>> strindex(str1, [';', '.', ']'])
ans  =
    4.    7.    10.    14.    17.    21.  

 

이 함수 strindex()의 첫 번째는 반드시 단일 문자열이어야 하며 결과 값은 이 문자열의 첫 문자를 1로 보았을 때의 인덱스 값이다. 위의 예들 중 마지막 예에서는 str1 문자열에서 앞에서부터 ‘;’ 또는 ‘.’ 또는  ‘]’ 인 것의 인덱스를 차례로 찾아서 반환해 준다.

 함수 sci2exp()는 입력을 Scilab 명령의 문자열로 변환시켜 준다.

>> A=[1 2;%i, %pi]
A  =
   1.     2.        
   i      3.1415927  

>> str3 = sci2exp(A)
str3  =
 [ 1, 2;%i, 3.1415927]  

>> typeof(str3)
ans  =
 string  



Posted by 살레시오
,

  Scilab에서 문자열은 큰따옴표 “ “ 로 묶거나 작은 따옴표 ‘ ‘ 로 묶을 수 있으며 숫자와 마찬가지로 변수에 대입할 수 있다. 큰 따옴표로 묶었다면 반드시 큰 따옴표로 끝나야 하며 작은 따옴표로 시작했다면 작은 따옴표로 마쳐야 한다.

>> x = ”Hello ” ; // 큰 따옴표 사용
>> y = ’world.’ ; // 작은 따옴표 사용

다른 프로그래밍 언어(예를 들어 C/C++/JVAV 등)의 경우에는 작은 따옴표가 하나의 문자를 표시하는데 이것과 혼동하지 말아야 한다. Scilab에는 하나의 문자를 저정하는  char형이라는 데이터형 자체가 없으며 작은 따옴표도 큰 따옴표와 똑같이 문자열을 만들 때 사용된다.

 두 문자열을 하나로 묶을 때에서는 덧셈(+) 기호를 사용할 수 있으므로 매우 직관적이고 편하게 사용할 수 있다.

>> z = x + y
ans=
   Hello world.

드물긴 하지만  만약 문자열 자체에 큰따옴표나 작은 따옴표가 포함되어 있다면 두 개를 연달아 써주면 된다. 예를 들면 다음과 같다.


>> s1 = 'He said ""Hello"".'
s1  =
     He said "Hello".
>> s2 = "She thinked ''It''s him!''"
s2  =
     She thinked 'It's him!'

 

위의 예는 문자열 자체에 큰 따옴표나 작은 따옴표가 포함된 경우이다.

 한 가지 더 언급할 것은 Scilab에서 문자열은 ‘문자의 배열’이 아니라 숫자와 마찬가지로 단일 데이터형으로 이해하는 것이 좋다. 뒤에 언급하겠지만 숫자가 1x1 행렬인 것처럼 단일 문자열도 1x1 크기의 행렬(더 정확히 표현하면 cell 이지만 편의상 행렬로 지칭하기로 하겠다.)로 취급된다.

기본적인 문자열 관련 함수

 함수 length()는 문자열의 길이를 반환해 준다.

>> length(s1)
ans  =
     16.

 

문자열은 숫자처럼 벡터나 행렬의 요소가 될 수도 있다. 이 경우 size()함수는 문자열 배열의 크기를  반환한다.



이 예에서 변수 sm은 2x3크기의 행렬인데 각각의 요소는 문자열로 채워져 있다. 문자열의 행렬이 length()함수의 입력이 되면 같은 크기의 행렬에  각각의 요소의 문자열의 크기를 반환한다. 어떤 행렬의 한 요소가 문자열이라면 다른 모든 요소도 문자열이어야 한다.

 문자열 합성 연산자 +는 단일 문자열뿐만 아니라 문자열 행렬에 대해서도 유사하게 사용된다.

>> cost = string([10 20; 100 110])
cost  =
        !10   20   !
        !100  110  !

>> scost = '$'+cost+'.00'
scost  =
        !$10.00   $20.00   !
        !$100.00  $110.00  !


이 예에서 string()함수는 숫자 행렬을 문자열 행렬로 바꿔주는 함수이다. 주의할 점은 + 연산자의 두 피연산자가 모두 문자열 행렬일 때에는 크기가 같아야 한다는 점이다. 두 피연산자 중 하나가 단일 문자열일 때는 그것이 다른 행렬의 모든 요소에 더해지게 된다. (이 점은 덧셈 연산자의 기본적인 성질에 부합된다. 스칼라과 행렬의 덧셈을 생각해 보라.)

함수 emptystr(r,c)은 rxc 크기의 빈문자열 행렬을 생성해준다.



이 함수를 이용하면 같은 문자열을 모든 요소로 가지는 문자열 행렬을 쉽게 생성할 수 있다. 예를 들어서 모든 요소가 ‘hello’라는 문자열인 5x3크기의 행렬을 생성하려면 다음과 같이 하면 된다.


>> samestr = emptystr(5,3)+'hello'
samestr  =
       !hello  hello  hello  !
       !hello  hello  hello  !
       !hello  hello  hello  !
       !hello  hello  hello  !
       !hello  hello  hello  !

  문자열의 각각의 문자를 아스키(ASCII) 값의 벡터로 바꿔주는 ascii()라는 함수가 있다.


>> ascii('01ABab')
ans  =
     48.    49.    65.    66.    97.    98.

 

이 예에서 문자 ‘0’의 아스키값은 48, 대문자 ‘A’는 65 임을 알 수 있다.

 이전 포스트에서 문자열들을 하나의 문자열로 합치는데 +연산자를 사용한다고 했는데 strcat()함수도 유사한 기능을 수행한다. 기본적으로 문자열의 벡터(행벡터 혹은 열벡터 상관없음) SM에대해서 함수 strcat(SM)은 모든 요소를 하나의 문자열로 합쳐준다. 기본적으로 첫 번째 요소는 문자열 벡터이다.

만약 문자열 사이에 어떤 문자열을 추가시키고 싶다면 두 번째 인자로 그 문자열을 주면 된다. 아래 예는 문자열 사이에 공백문자 ‘ ‘와 ‘+’를 추가시킨 것이다.




Posted by 살레시오
,

 파이썬 문자열의 멤버 함수를 정리하면 다음 표와 같다.


문자열 함수

기능

format()

변수의 내용을 표시하기 위한 포맷팅을 수행한다.

lower(), casefold()

upper()

swapcase()

title()

capitalize()

대문자를 소문자로 바꾼다.

소문자를 대문자로 바꾼다.

대문자는 소문자로, 소문자는 대문자로 바꾼다.

모든 단어의 첫 문자만 대문자로 나머지는 소문자로 바꾼다.

문자열의 첫 글자만 대문자로 나머지는 소문자로 바꾼다.

islower()

isupper()

모든 문자가 소문자이면 True 반환

모든 문자가 대문자이면 True 반환

count(str)

str이 포함된 개수를 센다.

find(str)

index(str)

str의 첫 위치를 알아낸다. (없다면 -1 반환)

str의 첫 위치를 알아낸다. (없다면 예외 발생)

join(str)

str을 구성하는 각 문자 사이에 원 문자열을 끼워 넣는다.

lsrtip()

rstrip()

strip()

center(n[,str])

ljust(n[,str]))

rjust(n[,str]))

좌측 공백을 지운다.

우측 공백을 지운다.

양쪽의 공백을 지운다.

크기 n의 문자열의 중앙에 원 문자열을 정렬한다.

크기 n의 문자열의 왼쪽에 원 문자열을 정렬한다..

크기 n의 문자열의 오른쪽에 원 문자열을 정렬한다..

(두 번째 인수가 없다면 공백 문자를, 있다면 그 문자로 채운다.)

replace(str1, str2)

원 문자열 안의 str1을 str2로 바꾼다.

split()

split(sep)

공백문자를 기준으로 나누어서 리스트에 저장한다.

sep(문자열)을 기준으로 나누어서 리스트에 저장한다.

isalnum()

isalpha()

isidentifier()

모든 문자가 알파벳 혹은 숫자(alphanumeric)이면 True 반환.

모든 문자가 알파벳(alphabet)이면 True 반환.

문자열이 식별자의 조건에 맞다면 True 반환.

isdecimal()

isdigit()

isnumeric()

십진 정수이면 True 반환.

모든 문자가 0에서 9가지의 숫자이면 True 반환.

모든 문자가 0에서 9가지의 숫자이면 True 반환.

(세 함수의 차이점이 명확하지 않음.)


위의 함수들은 모두 문자열 혹은 문자열 변수에 바로 이어서 점(.)을 찍은 다음 호출할 수 있다. 예를 들면 다음과 같다.


>>> s = "HELLO"
>>> s2 = s.lower() #문자열 s를 전부 소문자로 만들어서 s2에 저장
>>> "Hi. My name is jhp.".count('jhp') #문자열에서 문자열 ‘jhp’의 개수를 센다.


 join()함수의 경우 str1.join(str2) 라고 입력하면 str2를 구성하는 각 문자의 사이에 str1을 끼워 넣어서 새로운 문자열을 생성한다.


>>>','.join('abc')
'a,b,c'
>>>'_and_'.join('jhpark')
'j_and_h_and_p_and_a_and_r_and_k'




Posted by 살레시오
,

 파이썬에서 문자열을 포맷팅할 때 문자열 객체의 멤버 함수인 format()을 이용할 수도 있다. (이 경우 C#의 문자열 포멧팅과 유사한 방법을 사용할 수 있다.)


>>> age = 44
>>> print(“I’m {0} years old.'.format(age))
I’m 44 years old.


문자열 안의 ‘{번호}’ 가 format() 멤버함수의 인자의 내용으로 치환이 됨을 알 수 있다. 변수의 종류는 가리지 않으며 foramt()함수의 첫 번째 인자가 0번, 두 번째 인자가 1번...순으로 지정된다.


 여러 개의 변수를 출력할 수도 있다.


>>> name='Jang-Hyun Park'
>>> age=44
>>> print("My name is {0} and {1} years old.".format(name,age))
My name is Jang-Hyun Park and 44 years old.


여기에서 문자열 내부의 ‘{0}’은 name 변수로, ‘{1}’은 age변수의 내용으로 치환된다.


 실수의 소수점 아래 자리수를 제한하려면 다음과 같이 하면 된다.


>>> rn = 1.2345678
>>> print("rn is about {0:.4f}.".format(rn))
rn is about 1.2346.


 포맷팅을 하는 두 가지 방법 모두 장단점이 있으므로 상황에 따라 편한 쪽을 택해서 사용하면 된다. 예를 들어서 동일한 변수를 여러 번 출력할 때는 여기에서 소개한 방법이 더 유리하다.


>>> blah = ‘blah’
>>> print(“%s %s %s %s”%(blah, blah, blah, blah))
>>> print(“{0} {0} {0} {0}”.format(blah))


이와 같이 동일한 변수를 여러 번 출력할 경우 세 번째 줄과 같이 문자열의 format() 필드를 이용하면 두 번째 줄의 %-formatter보다 더 간략하게 사용할 수 있다.



Posted by 살레시오
,