Python Linux:抓取所有可以在文本文件中向前和向后拼写的行

Sla*_*ion 0 python linux

我需要从linux命令行中获取文本文件中的所有回文线(拼写相同的向前和向后).我不认为你只能使用一个命令来执行此操作,因为你必须检查任何长度的行.所以除了制作一个脚本之外,我不知道有什么方法可以做到这一点(如果我错了,请纠正我).所以我所做的就是获取所有行的长度并执行一个grep命令来检查那些长的行:

import os

ex_front = "egrep -i '^"
ex_middle_front = ""
ex_middle_back = ""
ex_back = "$' textfile.txt"

textFile = open("textfile.txt", "r")
stringList = textFile.readlines()
lengthList = set([])

for line in stringList:
    lengthList.add(len(line))

for x in lengthList:
    ex_middle_front = ""
    ex_middle_back = ""

    for i in range(int(x/2), 0, -1):
        ex_middle_front += "(.)"
        ex_middle_back += "\\" + str(i)

    if x % 2 == 0:
        ex_middle = ""
    else:
        ex_middle = "."

    os.system(ex_front + ex_middle_front + ex_middle + ex_middle_back + ex_back)
Run Code Online (Sandbox Code Playgroud)

这有效,但我想知道是否有更好的解决方案.

Mat*_*haq 5

这是一种方式:

def is_palindrome(x):
    return x == x[::-1]

with open('so_palindromes.txt', 'r') as f:
    for line in map(lambda x: x.rstrip(), f):
        if is_palindrome(line):
            print(line)
Run Code Online (Sandbox Code Playgroud)

测试文件:

lol
not
really
a
palindrome
yay
hah
Run Code Online (Sandbox Code Playgroud)

输出:

lol
a
yay
hah
Run Code Online (Sandbox Code Playgroud)