Python处理剪贴板文本遇格式问题:如何拆分Pygame中粘贴的字符串
处理多行文本拆分时的乱码与拆分失败问题
原始数据格式
00x0x00 1 10x1x11 2 13x2x27 6
问题说明
已实现将上述多行数据复制粘贴到终端或Pygame窗口,但无法拆分每行中的两部分内容(如拆分00x0x00和1)。尝试过str.split()方法、将空格替换为逗号后拆分、按'\n'拆分,均未成功,输出结果出现含\x00的乱码。
相关代码
# 此处为用户提供的相关代码片段
错误输出
# 此处为用户提供的输出内容
完整代码
# 此处为用户提供的完整代码
解决方案
问题根源
\x00是ASCII空字符,说明粘贴的文本混入了不可见的空控制字符,大概率是复制来源的格式问题(如编辑器隐藏字符)或粘贴过程中的编码异常导致额外字符插入。
具体处理步骤
- 先清理空字符:在拆分前过滤掉所有
\x00字符,再执行拆分逻辑# 假设raw_input是你获取到的粘贴文本 cleaned_input = raw_input.replace('\x00', '') # 按行拆分并过滤空行 lines = [line.strip() for line in cleaned_input.split('\n') if line.strip()] # 拆分每行的两部分内容,maxsplit=1确保只按第一个空格拆分 parsed_data = [line.split(maxsplit=1) for line in lines] print(parsed_data) - 排查隐藏字符:如果清理后仍有问题,用
repr()打印文本,查看所有转义字符,确认是否还有其他控制字符:print(repr(cleaned_input)) - Pygame输入额外处理:如果是从Pygame窗口获取输入,检查事件处理逻辑,确保只拼接有效可见字符,避免引入空字符:
import pygame pygame.init() screen = pygame.display.set_mode((400, 300)) input_text = "" running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RETURN: # 处理输入文本 cleaned_text = input_text.replace('\x00', '') print([line.split() for line in cleaned_text.split('\n') if line.strip()]) input_text = "" elif event.key == pygame.K_BACKSPACE: input_text = input_text[:-1] else: # 仅添加可见字符,过滤控制字符 if event.unicode: input_text += event.unicode screen.fill((255,255,255)) pygame.display.flip() pygame.quit()
内容的提问来源于stack exchange,提问作者CPlusPlusandHTMLguy
相关产品推荐
相关产品推荐

