데이터프레임을 레코드(딕셔너리 목록)으로 변환
data = df.to_dict(orient="records")
[ f"({', '.join(map(repr, values))})" for values in key_values]
', '를 ", "로 바꿨을 때 오류가 나는 이유는 Python의 repr() 함수가 문자열을 표현할 때 자동으로 작은따옴표(')를 사용하는 방식 때문입니다.
repr() 함수는 Python에서 객체를 문자열로 표현하는 데 사용되는 내장 함수입니다. 특히, 객체를 "개발자 친화적인(representational)" 문자열로 반환합니다. 이를 통해 해당 객체를 정확히 재현하거나 디버깅할 때 유용하게 활용할 수 있습니다.
repr()의 특징
개발자용 출력 (Representation)
repr() 함수는 객체를 가능한 한 Python 코드에서 재현 가능한 형태로 변환합니다.
이 점에서 사용자 친화적인 str() 함수와는 차이가 있습니다.
repr()의 반환값은 일반적으로 작은따옴표(')를 사용합니다.
반환값은 항상 문자열
객체를 문자열로 변환한 결과를 반환합니다.
주 목적: 디버깅과 개발
객체의 내부 구조나 상태를 확인할 때 유용합니다.
예를 들어, 문자열 객체에서 공백, 이스케이프 문자 등을 포함해 실제 내용을 정확히 표현합니다.
사용 예제
기본 사용
x = 'hello'
print(repr(x)) # "'hello'"
반환값: 문자열 "hello"를 작은따옴표로 감싸고 이스케이프 문자를 포함한 형태로 표현.
다양한 데이터 타입
print(repr(123)) # '123' (정수)
print(repr(3.14)) # '3.14' (실수)
print(repr([1, 2, 3])) # '[1, 2, 3]' (리스트)
print(repr({'a': 1})) # "{'a': 1}" (딕셔너리)
이스케이프 문자 표현
s = "Hello\nWorld!"
print(str(s)) # Hello
# World!
print(repr(s)) # 'Hello\nWorld!' (이스케이프 문자 포함)
객체에 적용
repr()은 객체의 repr() 메서드를 호출하여 동작합니다.
class MyClass:
def __repr__(self):
return "MyClass()"
obj = MyClass()
print(repr(obj)) # MyClass()
repr()의 활용 사례
디버깅
문자열의 특수문자, 공백, 이스케이프 문자 등을 포함해 객체의 정확한 상태를 확인합니다.
data = "Line1\nLine2"
print(repr(data)) # 'Line1\nLine2'
파일이나 데이터 직렬화
객체를 코드로 재현해야 하는 경우 사용됩니다.
data = [1, 2, 3]
print(f"Data: {repr(data)}") # Data: [1, 2, 3]
객체의 테스트
객체를 특정 상태로 생성하는 테스트 코드 작성 시 사용됩니다.