#python #clipboard
#python #буфер обмена
Вопрос:
По сути, я копирую кучу списков из https://en.wikipedia.org/wiki/List_of_lists_of_lists в мой буфер обмена. Когда я запускаю свою программу, она добавляет маркеры после и перед каждой строкой.
Например:
Lists of Iranian films
Преобразует в:
•• Lists of Iranian films ••
И так далее. Программа работает, когда я добавляю маркеры перед строкой, но когда я помещаю их после нее, она просто печатает одну длинную строку без каких-либо символов новой строки. Кто-нибудь может сказать мне, что я делаю не так?
Вот код:
#bulletPointAdder.py - Adds Wikipedia bullet points to the start and end
#of each line of text on the clipboard
import pyperclip
text=pyperclip.paste() #paste a big string of text from clipboard into the 'text' string
# Separate lines and add stars
lines = text.split('n') #'lines' contains a list of all the individual lines up until 'n'
#lines= ['list of iserael films', 'list of italian films' ...]
for i in range(len(lines)): #loop through all indexes in the "lines" list
lines[i] = '••' lines[i] '••' #add bullets before and after each line
text = 'n'.join(lines) #put a 'n' in between the list members (joins them) into a single string
pyperclip.copy(text)
В моем буфере обмена:
List of Israeli films before 1960
List of Israeli films of the 1960s
List of Israeli films of the 1970s
List of Israeli films of the 1980s
Буфер обмена вставляется в блокнот:
••List of Israeli films before 1960••••List of Israeli films of the 1960s••••List of Israeli films of the 1970s••••List of Israeli films of the 1980s••
Комментарии:
1. В чем ваш вопрос? Какой тип
text
? Это alist
str
элементов?2. Извините, тип его строки скопирован в буфер обмена.
Ответ №1:
Внесите небольшое изменение в свой код (используйте os.перевод строки вместо 'n'
):
import os
import pyperclip
text=pyperclip.paste()
#paste will paste a big string of text in 'text' string
# Separate lines and add stars
lines = text.split(os.linesep) #lines contains a list of all the individual lines up cut before newline
#lines= ['list of iserael films', 'list of italian films' ...]
for i in range(len(lines)): #loop through all indexes in the "lines" list
lines[i] = '••' lines[i] '••' #add bullets before and after each line
text = os.linesep.join(lines) #put a newline in between the list members (joins them) into a single string
pyperclip.copy(text)
Как правило, «новая строка» относится к любому набору символов, который обычно интерпретируется как сигнализация новой строки, которая может включать:
- CR LF в DOS / Windows
- CR на старых компьютерах Mac
- LF в вариантах Unix, включая современные Mac
CR — это символ ASCII возврата каретки (код 0x0D), обычно представленный как r . LF — это символ перевода строки (код 0x0A), обычно представленный как n .
Кроме того, прочитайте это: https://blog.codinghorror.com/the-great-newline-schism /
Я просто хотел, чтобы вы написали независимое от платформы решение. Следовательно os.linesep
Комментарии:
1. Большое спасибо.. это действительно работает. Можете ли вы сказать мне, что я делал не так? Очень странно, что это не будет работать с символом ‘ n’.
2. Я понимаю.. Еще раз спасибо.