Python:如何在多行字符串中搜索特定内容

发布于 2024-11-28 06:32:04 字数 383 浏览 1 评论 0原文

创建了一个字符串

connectString = 'D:\Database\10.2.0\BIN\sqlplus.exe -L sys/PASSWORD'
output = str(call(connectstring))

打印输出的结果

stuff stuff stuff
  stuff even more stuff
ORA-28009
stuff stuff
  stuff and stuff

我已经根据

output.find('ORA-28009')

,但它找不到字符串序列。我能想到的唯一原因是字符串是多行的。我该如何处理这个问题?

I have created a string from

connectString = 'D:\Database\10.2.0\BIN\sqlplus.exe -L sys/PASSWORD'
output = str(call(connectstring))

this results from print output

stuff stuff stuff
  stuff even more stuff
ORA-28009
stuff stuff
  stuff and stuff

I do

output.find('ORA-28009')

but it does not find the string sequence. The only reason I can think of is because the string is multi line. How do I handle this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

迷迭香的记忆 2024-12-05 06:32:04

尝试规范化字符串,删除特殊字符。
我使用这样的函数:

def trim (str):
    str = str.replace(' ', '')
    str = str.replace('\s', '')
    str = str.replace('\t', '')
    str = str.replace('\r', '')
    str = str.replace('\n', '')
    return str

也许你可以根据你的情况调整它。
最好的,
斯特

try to normalise the string removing the special charachter.
i use a function like this:

def trim (str):
    str = str.replace(' ', '')
    str = str.replace('\s', '')
    str = str.replace('\t', '')
    str = str.replace('\r', '')
    str = str.replace('\n', '')
    return str

Maybe you can adapt it to your case.
best,
Ste

云巢 2024-12-05 06:32:04

这就是我所做的来解决它。需要 sPath 变量,因为我在同一服务器上有两个单独的 Oracle 实例。为了正确测试 sys 帐户密码,我需要使用该实例的正确密码运行特定目录中包含的 sqlplus。

def startSQLHelper(self, sPath, sPassword):
  print '--starting SQL helper--'
  args = [sPath + 'sqlplus.exe', '-L', 'sys/'+sPassword]
  return subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

def checkOraPass (self, sPath, sPassword):
  print '--checkOraPass--'
  p = self.startSQLHelper(sPath, sPassword)
  output = p.communicate()[0]
  print output

  if output.find('ORA-28009') != -1:
     print 'Password passed'
     return True

  return False

This is what I did to solve it. The sPath variable is needed because I have two seperate instances of Oracle on the same server. To properly test the sys account password I needed to run the sqlplus contained in the specific dir with the correct password for that instance.

def startSQLHelper(self, sPath, sPassword):
  print '--starting SQL helper--'
  args = [sPath + 'sqlplus.exe', '-L', 'sys/'+sPassword]
  return subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

def checkOraPass (self, sPath, sPassword):
  print '--checkOraPass--'
  p = self.startSQLHelper(sPath, sPassword)
  output = p.communicate()[0]
  print output

  if output.find('ORA-28009') != -1:
     print 'Password passed'
     return True

  return False
故事和酒 2024-12-05 06:32:04

尝试替换

output = str(call(connectstring))

output = str(check_output(connectstring))

which 返回命令输出中的字节。

Try replacing

output = str(call(connectstring))

with

output = str(check_output(connectstring))

which returns the bytes from the output of the command.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文