Я обработка строки, как это:Python: как обрабатывать вставляемый текст из буфера обмена?
scrpt = "\tFrame\tX pixels\tY pixels\r\n\t2\t615.5\t334.5\r\n\t3\t615.885\t334.136\r\n\t4\t615.937\t334.087\r\n\t5\t615.917\t334.106\r\n\t6\t615.892\t334.129\r\n\t7\t615.905\t334.117\r\n\t8\t615.767\t334.246\r\n\t9\t615.546\t334.456\r\n\t10\t615.352\t334.643\r\n\r\n"
infile = StringIO(scrpt)
#pretend infile was just a regular file...
r = csv.DictReader(infile, dialect=csv.Sniffer().sniff(infile.read(1000)))
infile.seek(0)
Frame, Xco, Yco = [],[],[]
for row in r:
Frame.append(row['Frame'])
Xco.append(row['X pixels'])
Yco.append(row['Y pixels'])
Это прекрасно работает. Я получаю строку переменной «SCRPT» отсортирован красиво в «рамке» The переменных «XCO» и «МКО»
Теперь, если я это сделать:
print(scrpt)
Я вижу вещи, аккуратно выложенные в вкладки колонна, как это:
Frame X pixels Y pixels
2 615.5 334.5
3 615.885 334.136
4 615.937 334.087
5 615.917 334.106
6 615.892 334.129
7 615.905 334.117
8 615.767 334.246
9 615.546 334.456
10 615.352 334.643
Но если у меня есть та же строка вставленной из буфера обмена и попытаться обработать его он не работает. В этом случае, если я печатаю это так:
print(scrpt)
Я вижу:
\tFrame\tX pixels\tY pixels\r\n\t2\t615.5\t334.5\r\n\t3\t615.885\t334.136\r\n\t4\t615.937\t334.087\r\n\t5\t615.917\t334.106\r\n\t6\t615.892\t334.129\r\n\t7\t615.905\t334.117\r\n\t8\t615.767\t334.246\r\n\t9\t615.546\t334.456\r\n\t10\t615.352\t334.643\r\n\r\n
Затем, когда я иду, чтобы обработать его модуль CSV не разобраться.
Что я делаю неправильно? Похоже, что я использую одни и те же данные в обоих случаях, но что-то другое.
Вы уверены, что ваш буфер обмена имеет символы табуляции, а не буквальные обратные косые черты, а затем 't's? (Например, если вы копируете и вставляете строку из первой строки исходного кода, вы получите обратную косую черту и 't' s, а не вкладки.) – abarnert