отдельные строки по строке в них в python - PullRequest
0 голосов
/ 29 мая 2020

У меня есть файл , содержащий (~ 1000) строк данных в следующей упрощенной форме:

movej(p[-0.2875, -0.4, 0.05, -0.0004, 3.1415, 0.0002],a=5.000000,v=5.000000,r=0.000000) 
movej([-1.3615, -2.0244, -1.5691, -2.6895, 0.2092, 1.2197],a=5.000000,v=5.000000,r=0.050000)
movel(p[-0.2875, -0.375, 0.0, -0.0004, 3.1415, 0.0002],a=0.500000,v=0.300000,r=0.000000)
movel([-1.2437, -1.9458, -2.0485, -2.2887, 0.0128, 1.2197],a=5.000000,v=5.000000,r=0.050000)
# Various comments
## Various comments
### Various comments

И мне нужно разделить строки на два набора (для позднее преобразование в pandas фреймы данных), один набор состоит из строк, начинающихся с p с «movej (p [» или «movel (p [»), а другой состоит из строк без p -строка с «movej ( ["или" movel ([".

movej(p[-0.2875, -0.4, 0.05, -0.0004, 3.1415, 0.0002],a=5.000000,v=5.000000,r=0.000000) 
movel(p[-0.2875, -0.375, 0.0, -0.0004, 3.1415, 0.0002],a=0.500000,v=0.300000,r=0.000000)

and

movej([-1.3615, -2.0244, -1.5691, -2.6895, 0.2092, 1.2197],a=5.000000,v=5.000000,r=0.050000)
movel([-1.2437, -1.9458, -2.0485, -2.2887, 0.0128, 1.2197],a=5.000000,v=5.000000,r=0.050000)

Для этого я создал следующий код, который почти выполняет свою работу.

Проблема, с которой я столкнулся, заключается в том, что он останавливается или не хранит все в строках TCP_lines и Joint_lines. Я также пробовал использовать список с тем же результатом.

with open("SRP_Assemble all BUSH_BEARING onto HPC_FRONT_BOTTOM.script", "r") as f:
    lines = f.readlines()
    TCP_lines = ""
    joint_lines = ""

    for line in lines:
        if line.startswith(("movej(p" ,"movel(p")):
            TCP_lines += line
        elif line.startswith(("movej(" ,"movel(")):
            joint_lines += line

print (TCP_lines)
print (joint_lines)

EDIT: есть ли на консоли ограниченное пространство для печати результатов? Таким образом, он печатает только первая пара строк?

Я использовал перенаправитель, чтобы распечатать результаты в текстовом поле, и он выглядит нормально ...

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Я попытался смоделировать то, что вы делаете. Ниже выводятся правильные строки. Какой результат вы получите?

lines = ["movej(p[-0.2875, -0.4, 0.05, -0.0004, 3.1415, 0.0002],a=5.000000,v=5.000000,r=0.000000)",
"movej([-1.3615, -2.0244, -1.5691, -2.6895, 0.2092, 1.2197],a=5.000000,v=5.000000,r=0.050000)",
"movel(p[-0.2875, -0.375, 0.0, -0.0004, 3.1415, 0.0002],a=0.500000,v=0.300000,r=0.000000)",
"movel([-1.2437, -1.9458, -2.0485, -2.2887, 0.0128, 1.2197],a=5.000000,v=5.000000,r=0.050000)",]

TCP_lines = ""
joint_lines = ""

for line in lines:
    if line.startswith(("movej(p" ,"movel(p")):
        TCP_lines += line
    elif line.startswith(("movej(" ,"movel(")):
        joint_lines += line

print (TCP_lines)
print (joint_lines)

OUT :

movej (p [-0,2875, -0,4, 0,05, -0,0004, 3,1415, 0,0002 ], a = 5,000000, v = 5,000000, r = 0,000000) движение (p [-0,2875, -0,375, 0,0, -0,0004, 3,1415, 0,0002], a = 0,500000, v = 0,300000, r = 0,000000)

movej ([- 1.3615, -2.0244, -1.5691, -2.6895, 0.2092, 1.2197], a = 5.000000, v = 5.000000, r = 0.050000) movel ([- 1.2437, -1.9458, -2.0485, -2.2887, 0.0128 , 1,2197], a = 5,000000, v = 5,000000, r = 0,050000)

0 голосов
/ 29 мая 2020

Переместите операторы печати в диспетчер контекста и добавьте строку отладки, Пример:

with open("SRP_Assemble all BUSH_BEARING onto HPC_FRONT_BOTTOM.script", "r") as f:
    lines = f.readlines()
    TCP_lines = ""
    joint_lines = ""

    for line in lines:
        if line.startswith(("movej(p", "movel(p")):
            TCP_lines += line
        elif line.startswith(("movej(", "movel(")):
            joint_lines += line
        else:
            print(line)  # Check all other lines if they failed to pass the check
    print(TCP_lines)
    print(joint_lines)

Это выводит:

movej(p[-0.2875, -0.4, 0.05, -0.0004, 3.1415, 0.0002],a=5.000000,v=5.000000,r=0.000000)
movel(p[-0.2875, -0.375, 0.0, -0.0004, 3.1415, 0.0002],a=0.500000,v=0.300000,r=0.000000)

movej([-1.3615, -2.0244, -1.5691, -2.6895, 0.2092, 1.2197],a=5.000000,v=5.000000,r=0.050000)
movel([-1.2437, -1.9458, -2.0485, -2.2887, 0.0128, 1.2197],a=5.000000,v=5.000000,r=0.050000)
...
...