■ ( )을 사용해 멀티 라인 문자열을 구하는 방법을 보여준다. ▶ main.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
systemString = ( "You are an assistant for question-answering tasks. " "Use the following pieces of retrieved context to answer " "the question. If you don't know the answer, say that you " "don't know. Use three sentences maximum and keep the " "answer concise." "\n\n" "{context}" ) print(systemString) """ You are an assistant for question-answering tasks. Use the following pieces of retrieved context to answer the question. If you don't know the answer, say that you don't know. Use three sentences maximum and keep the answer concise. {context} """ |
■ hex 함수를 사용해 ARGB 색상의 16진수 문자열 값을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
alphaValue = 0.8 redValue = 166 greenValue = 128 blueValue = 255 alphaHexadecimalValue = hex(int(round(alphaValue * 255, 0))).replace("0x", "") redHexadecimalValue = hex(redValue ).replace("0x", "") greenHexadecimalValue = hex(greenValue).replace("0x", "") blueHexadecimalValue = hex(blueValue ).replace("0x", "") print(f"#{alphaHexadecimalValue}{redHexadecimalValue}{greenHexadecimalValue}{blueHexadecimalValue}") # #cca680ff |
■ hex 함수를 사용해 RGB 색상의 16진수 문자열 값을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
redValue = 166 greenValue = 128 blueValue = 255 redHexadecimalValue = hex(redValue ).replace("0x", "") greenHexadecimalValue = hex(greenValue).replace("0x", "") blueHexadecimalValue = hex(blueValue ).replace("0x", "") print(f"#{redHexadecimalValue}{greenHexadecimalValue}{blueHexadecimalValue}") # #a680ff |
■ str 클래스의 format 메소드에서 천단위 콤마를 삽입하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
print("{:,}".format(12345678910 )) # 12,345,678,910 print("{:0,.1f}".format(12345678910 )) # 12,345,678,910.0 print("{:0,.1f}".format(12345678910.18275)) # 12,345,678,910.2 print("{:0,.2f}".format(12345678910 )) # 12,345,678,910.00 print("{:0,.2f}".format(12345678910.18275)) # 12,345,678,910.18 |
■ format 함수에서 천단위 콤마를 삽입하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
print(format(12345678910, ',d')) # 12,345,678,910 print(format(12345678910, ',f')) # 12,345,678,910.000000 print(format(12345678910 , ',d')) # 12,345,678,910 print(format(12345678910.18275, ',f')) # 12,345,678,910.18275 print(format(12345678910 , ',')) # 12,345,678,910 print(format(12345678910.18275, ',')) # 12,345,678,910.18275 |
■ bytes 클래스의 decode 메소드를 사용해 바이트 배열에서 UTF-32 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
utf32Bytes = b'\xff\xfe\x00\x00A\x00\x00\x00B\x00\x00\x00C\x00\x00\x00D\x00\x00\x00E\x00\x00\x00' text = utf32Bytes.decode("utf-32") print(text) """ ABCDE """ |
■ StringIO 클래스를 사용해 문자열을 파일 형태로 처리하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
import io text = "c# vb java javascript python rust" stringIO = io.StringIO(text) print(stringIO.read()) stringIO.close() |
■ 문자열 보간법을 사용하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
databaseFilePath = "test.db" databaseURL = f"sqlite:///{databaseFilePath}" """ sqlite:///test.db """ |
■ str 클래스를 사용해 특정 인코딩 바이트 값에서 문자열을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
sourceString = "테스트" targetBytes = sourceString.encode(encoding = "UTF-32") print(targetBytes) targetString1 = str(targetBytes, encoding = "UTF-32") targetString2 = str(b"\xff\xfe\x00\x00L\xd1\x00\x00\xa4\xc2\x00\x00\xb8\xd2\x00\x00", encoding = "UTF-32") print(targetString1) print(targetString2) """ 테스트 테스트 """ |
■ str 클래스의 decode 메소드에서 encoding 인자를 사용하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
sourceString = "테스트" targetBytes = sourceString.encode(encoding = "UTF-32") targetString = targetBytes.decode(encoding = "UTF-32") print(targetString) """ 테스트 """ |
■ str 클래스의 encode 메소드에서 encoding 인자를 사용해 인코딩 방식에 따라 변환한 바이트 값들을 구하는 방법을 보여준다. ▶ 예제 코드 (PY)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
def printString(sourceString, encoding): targetBytes = sourceString.encode(encoding = encoding) print("소스 문자열 : %s" % sourceString) print("인코딩 타입 : %s" % encoding ) print("타겟 바이트 : %s" % targetBytes ) print() printString("ABCDE", "ASCII" ) printString("ABCDE", "CP949" ) printString("ABCDE", "EUC-KR") printString("ABCDE", "UTF-8" ) printString("ABCDE", "UTF-16") printString("ABCDE", "UTF-32") """ 소스 문자열 : ABCDE 인코딩 타입 : ASCII 타겟 바이트 : b'ABCDE' 소스 문자열 : ABCDE 인코딩 타입 : CP949 타겟 바이트 : b'ABCDE' 소스 문자열 : ABCDE 인코딩 타입 : EUC-KR 타겟 바이트 : b'ABCDE' 소스 문자열 : ABCDE 인코딩 타입 : UTF-8 타겟 바이트 : b'ABCDE' 소스 문자열 : ABCDE 인코딩 타입 : UTF-16 타겟 바이트 : b'\xff\xfeA\x00B\x00C\x00D\x00E\x00' 소스 문자열 : ABCDE 인코딩 타입 : UTF-32 타겟 바이트 : b'\xff\xfe\x00\x00A\x00\x00\x00B\x00\x00\x00C\x00\x00\x00D\x00\x00\x00E\x00\x00\x00' """ |
■ str 클래스를 사용해 숫자형 값을 문자열로 변환하는 방법을 보여준다. ▶ 예제 코드 (PY)
|
a = 10 b = str(a) print(b) print(type(b)) """ 10 <class 'str'> """ |
■ canvas 엘리먼트에서 텍스트를 그리는 방법을 보여준다. ▶ test.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script language="javascript"> function process_loaded() { var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); context.font = '40pt 궁서'; context.textAlign = 'left'; context.textBaseline = 'top'; context.fillText('텍스트', 50, 100); var length = context.measureText('텍스트').width; context.strokeText('텍스트', 50 + length + 20, 100); } </script> </head> <body onload="process_loaded();"> <canvas id="canvas" width="400" height="400" /> </body> </html> |
■ JavaScriptEncoder 클래스의 Encode 메소드를 사용해 자바 스크립트를 인코딩하는 방법을 보여준다. ▶ 예제 코드 (C#)
|
using System.Text.Encodings.Web; string source = @"function test(a, b) { return a + b; } "; string target = JavaScriptEncoder.Default.Encode(source); Console.WriteLine(target); // function test(a, b)\r\n{\r\n return a \u002B b;\r\n}\r\n |
■ CsvWriter 클래스의 WriteRecords 메소드를 사용해 CSV 파일에 데이터를 추가하는 방법을 보여준다. ▶ Student.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
using CsvHelper.Configuration.Attributes; namespace TestProject; /// <summary> /// 학생 /// </summary> public class Student { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region ID - ID /// <summary> /// ID /// </summary> [Name("ID")] public string ID { get; set; } #endregion #region 성명 - Name /// <summary> /// 성명 /// </summary> [Name("성명")] public string Name { get; set; } #endregion #region 점수 - Score /// <summary> /// 점수 /// </summary> [Name("점수")] public int Score { get; set; } #endregion } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
using System.Globalization; using CsvHelper; using CsvHelper.Configuration; namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { List<Student> sourceList = new List<Student> { new Student { ID = "ID004", Name = "김동수", Score = 80 } }; CsvConfiguration csvConfiguration = new CsvConfiguration(CultureInfo.InvariantCulture); csvConfiguration.HasHeaderRecord = false; using(FileStream fileStream = File.Open("source.csv", FileMode.Append)) { using(StreamWriter streamWriter = new StreamWriter(fileStream)) { using(CsvWriter csvWriter = new CsvWriter(streamWriter, csvConfiguration)) { csvWriter.WriteRecords(sourceList); } } } } #endregion } |
TestProject.zip
■ CsvReader 클래스의 GetRecords 메소드를 사용해 CSV 파일을 로드하는 방법을 보여준다. ▶ Student.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
using CsvHelper.Configuration.Attributes; namespace TestProject; /// <summary> /// 학생 /// </summary> public class Student { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region ID - ID /// <summary> /// ID /// </summary> [Name("ID")] public string ID { get; set; } #endregion #region 성명 - Name /// <summary> /// 성명 /// </summary> [Name("성명")] public string Name { get; set; } #endregion #region 점수 - Score /// <summary> /// 점수 /// </summary> [Name("점수")] public int Score { get; set; } #endregion } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
using System.Globalization; using CsvHelper; namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { using(StreamReader streamReader = new StreamReader("source.csv")) { using(CsvReader csvReader = new CsvReader(streamReader, CultureInfo.InvariantCulture)) { List<Student> resultList = csvReader.GetRecords<Student>().ToList(); foreach(Student student in resultList) { Console.WriteLine($"{student.ID}, {student.Name}, {student.Score}"); } } } } #endregion } |
TestProject.zip
■ CsvWriter 클래스의 WriteRecords 메소드를 사용해 CSV 파일을 생성하는 방법을 보여준다. ▶ Student.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
using CsvHelper.Configuration.Attributes; namespace TestProject; /// <summary> /// 학생 /// </summary> public class Student { //////////////////////////////////////////////////////////////////////////////////////////////////// Property ////////////////////////////////////////////////////////////////////////////////////////// Public #region ID - ID /// <summary> /// ID /// </summary> [Name("ID")] public string ID { get; set; } #endregion #region 성명 - Name /// <summary> /// 성명 /// </summary> [Name("성명")] public string Name { get; set; } #endregion #region 점수 - Score /// <summary> /// 점수 /// </summary> [Name("점수")] public int Score { get; set; } #endregion } |
▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
using System.Globalization; using CsvHelper; namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { List<Student> sourceList = new List<Student> { new Student { ID = "ID001", Name = "홍길동", Score = 90 }, new Student { ID = "ID002", Name = "김철수", Score = 100 }, new Student { ID = "ID003", Name = "이영희", Score = 80 } }; using(StreamWriter streamWriter = new StreamWriter("d:\\result.csv")) { using(CsvWriter csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture)) { csvWriter.WriteRecords(sourceList); } } } #endregion } |
TestProject.zip
■ CsvHelper 누겟을 설치하는 방법을 보여준다. 1. Visual Studio를 실행한다. 2. [도구] / [NuGet 패키지 관리자] / [패키지 관리자 콘솔] 메뉴를 실행한다.
더 읽기
■ String 클래스의 Split 메소드를 사용해 특정 단어들이 포함된 문장을 구하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
string sourceText = @"5연 15행의 자유시이다. 작자의 말년 작품으로 유고로 전하여지다가, 1945년 12월 17일『자유신문』에 동생 이원조(李源朝)에 의하여 「꽃」과 함께 발표되었다. 그 뒤 시집에 계속 실려 이육사의 후기를 대표하는 작품으로 육사시비(陸史詩碑: 안동댐 입구에 세워져 있음)에도 새겨져 있다."; string[] searchTextArray = { "시집에", "후기를" }; string[] sourceLineArray = sourceText.Split(new char[] { '.', '?', '!' }); IEnumerable<string> resultEnumerable = from sourceLine in sourceLineArray let wordArray = sourceLine.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries) where wordArray.Distinct().Intersect(searchTextArray).Count() == searchTextArray.Count() select sourceLine; foreach(string result in resultEnumerable) { Console.WriteLine(result); } |
■ String 클래스의 Split 메소드를 사용해 단어 수를 세는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
string sourceText = @"5연 15행의 자유시이다. 작자의 말년 작품으로 유고로 전하여지다가, 1945년 12월 17일『자유신문』에 동생 이원조(李源朝)에 의하여 「꽃」과 함께 발표되었다. 그 뒤 시집에 계속 실려 이육사의 후기를 대표하는 작품으로 육사시비(陸史詩碑: 안동댐 입구에 세워져 있음)에도 새겨져 있다."; string searchText = "작품으로"; string[] sourceWordArray = sourceText.Split ( new char[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries ); IEnumerable<string> resultEnumerable = from sourceWord in sourceWordArray where sourceWord.Equals(searchText, StringComparison.InvariantCultureIgnoreCase) select sourceWord; int wordCount = resultEnumerable.Count(); Console.WriteLine($"단어 수 : {wordCount}"); |
■ String 구조체의 bytes 메소드를 사용해 바이트 값을 나열하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string : String = String::from("ABCDE"); for value in string.bytes() { println!("{}", value); } /* 65 66 67 68 69 */ |
■ String 구조체의 chars 메소드를 사용해 문자를 나열하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string : String = String::from("ABCDE"); for character in string.chars() { println!("{}", character); } /* A B C D E */ |
■ String 구조체에서 + 연산자를 사용해 문자열을 결합하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let string1 : String = String::from("Hello, "); let string2 : String = String::from("world!"); let string3 = string1 + &string2; // string1의 소유권이 이동되었다. println!("{}", string3); |
■ String 구조체의 push 메소드를 사용해 문자를 추가하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let mut string : String = String::from("tes"); string.push('t'); println!("{}", string); /* test */ |
■ String 구조체의 push_str 메소드를 사용해 문자열을 추가하는 방법을 보여준다. ▶ 예제 코드 (RS)
|
let mut string : String = String::from("AAA"); string.push_str(" BBB"); println!("{}", string); /* AAA BBB */ |