使用python从文本文件中提取特定字符串

yhuiod9q  于 2023-01-18  发布在  Python
关注(0)|答案(3)|浏览(180)

这是我们需要使用python或panda从文本文件中提取特定字符串的文本文件该字符串中包含单引号

>>>>>>>>>>>>
[fgh: hello how r u 'Output Port 1' of 'abcd/cdf' at the home]
[bsdfglsdgjh flgdfhgdfgh]
[fgh: mzjdhxl sldhvlk hvljhxv 'name1']
[bsdfglsdgjh flgdfhgdfgh]
---
[fgh: hello how r u 'Output Port 1' of 'cdf/abc' at the home]
[bsdfglsdgjh flgdfhgdfgh]
[fgh: mzjdhxl sldhvlk hvljhxv 'name2']
[bsdfglsdgjh flgdfhgdfgh]
---
[fgh: hello how r u 'Output Port 1' of 'xyz/pmn' at the home]
[bsdfglsdgjh flgdfhgdfgh]
[fgh: mzjdhxl sldhvlk hvljhxv 'name3']
[bsdfglsdgjh flgdfhgdfgh]

输出应为

name1 : abcd/cdf
name2 : cdf/abc
name3 : xyz/pmn
j1dl9f46

j1dl9f461#

你的问题的答案是这样的:

with open("filename.txt", "r") as file:
    strt = file.read()

a = strt.split("---")
for item in a:
    b = item.split("'")
    a = b[5].replace(">>>>>>>>>>>>", "")
    print(f"{b[5]} : {b[3]}")

将所有内容放入filename.txt并运行它。

wqsoz72f

wqsoz72f2#

只需打开并读取每一行,即可获得所需的值

with open("example.txt", "r") as example:
nameNum = 1
for i in example.readlines():
    
    if "Output Port 1" in i:
        new = i.split("'")
        index = new.index("Output Port 1")
        print(f'name{nameNum} : ' + new[index+2])
        nameNum += 1
j8ag8udp

j8ag8udp3#

你知道正则表达式吗?虽然不是过分的性能,但它们正是你在这种情况下会使用的类型。
下面的代码将为您提供查找名称的选项。

import re

match_lines_with_content = re.compile(r"^[fhg:")
match_name_designated_by_single_quote = re.compile(r"mzjdhxl sldhvlk hvljhxv (?P<name>[^']+)")

for line in <input_lines>:
   if match_lines_with_content.matches(line):
        name = match_name_designated_by_single_quote.match(line).group(0)

相关问题