코드 복사·붙여넣기 후 줄이 쪼개지거나 import 문이 이상해져요

2026년 2월 25일·8개 메시지

모바일에서 코드를 복사해 붙여넣을 때 import 같은 라인이 중간에 끊기거나 불필요한 줄바꿈/공백이 들어가는 현상과 그 대응 방법을 정리한다. 디스코드 봇을 개발하거나 디스호스트에서 호스팅 환경으로 배포할 때 이런 문제가 발생하면 빠르게 진단하고 복구하는 방법을 안내한다.

증상

  • 원래 한 줄이어야 할 import discord, from discord import app_commands 같은 문이 여러 줄로 분할되어 문법 오류 발생.
  • 줄 사이에 빈 줄이 과도하게 들어가거나, 들여쓰기와 공백이 엉켜서 파이썬 구문 오류가 발생.
  • 보이지 않는 문자(제로-폭 공백 등)로 인해 문법이 깨지거나 에디터에서 이상하게 보임.

예:

# 정상
import discord
from discord import app_commands
from discord.ext import commands

# 문제가 생긴 상태
import discord



from discord import


 app_commands



from discord.ext impo


 commands

원인

  • 모바일 클립보드·IME 또는 메시지 앱이 텍스트를 리플로우(reflow)하거나 스마트 문장 부호/자동 교정 기능이 개입하여 줄바꿈과 공백을 삽입.
  • 복사 경로에서 리치 텍스트->플레인 텍스트 변환 과정에서 숨김 문자(예: U+200B 제로 너비 스페이스, BOM 등)가 섞임.
  • 편집기나 채팅앱에서 “레이아웃 래핑”이 줄바꿈 문자로 바뀌는 경우.
  • 붙여넣을 때 일반 텍스트가 아닌 포맷이 적용되어 코드 포맷이 망가짐.

해결 방법

1단계: 우선 수동·환경 점검

  • 모바일에서 붙여넣기 전에 스마트 교정/스마트 문장 부호 비활성화(iOS: 설정 > 일반 > 키보드 > Smart Punctuation 끄기, Android IME 설정 유사).
  • 가능하면 QuickEdit, Jota+, DroidEdit 같은 플레인 텍스트 코드 에디터에 먼저 붙여넣어 포맷을 확인한다.
  • 디스코드 봇 코드를 편집할 때는 채팅창에 직접 붙여넣지 말고 파일로 업로드하거나 Git을 이용해 전송.

2단계: 손상 파일 자동 정리(스크립트)

  • 보이지 않는 문자 제거, CRLF->LF 정규화, 과도한 빈줄 정리, 흔한 import 분할 복원(라인 끝이 import인 경우 다음 줄과 병합) 스크립트를 제공한다.

다음 파이썬 스크립트를 로컬에서 실행해 파일을 정리한다:

# fix_whitespace.py
import re
import sys

def fix_text(s):
    # 보이지 않는 문자 제거
    s = s.replace('\u200B', '').replace('\ufeff', '')
    # CRLF -> LF
    s = s.replace('\r\n', '\n')
    # 여러 빈 줄을 하나로
    s = re.sub(r'\n{3,}', '\n\n', s)
    lines = s.split('\n')
    out = []
    i = 0
    while i < len(lines):
        line = lines[i]
        # 이전 줄이 'import'로 끝나면 다음 줄 병합
        if line.rstrip().endswith('import') and i+1 < len(lines):
            nxt = lines[i+1].strip()
            line = line.rstrip() + ' ' + nxt
            i += 1
        out.append(line)
        i += 1
    return '\n'.join(out)

if __name__ == '__main__':
    path = sys.argv[1]
    with open(path, 'r', encoding='utf-8') as f:
        s = f.read()
    fixed = fix_text(s)
    with open(path + '.fixed', 'w', encoding='utf-8') as f:
        f.write(fixed)
    print('Saved', path + '.fixed')

사용법:

python fix_whitespace.py broken.py
# 결과는 broken.py.fixed로 저장

3단계: 예방 권장 사항

  • 모바일에서 개발하려면 파일 동기화(Git, Dropbox, Google Drive)로 소스 전달. 채팅 앱 복붙 최소화.
  • 디스호스트 같은 호스팅에 배포할 때는 로컬에서 lint/pytest 등을 돌려 문법 에러를 확인 후 업로드.
  • 에디터에서 보이지 않는 문자 표시 옵션을 켜서 문제를 시각적으로 확인.

마무리

모바일 복사·붙여넣기로 인한 줄 분할과 숨김 문자 문제는 플레인 텍스트 에디터 사용, 스마트 교정 비활성화, 간단한 정리 스크립트로 대부분 해결된다. 디스코드 봇 개발과 디스호스트 호스팅 환경에서는 코드 무결성을 항상 확인한 뒤 배포하자.