Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python从文件中读取数据并将值放入变量中_Python_Python 2.7_File_Text - Fatal编程技术网

python从文件中读取数据并将值放入变量中

python从文件中读取数据并将值放入变量中,python,python-2.7,file,text,Python,Python 2.7,File,Text,嘿,我需要帮助解决这个问题。我希望能够读取如下格式的文本文件: test: value1 test2: value2 test3(sometimes included): value3 test: value1 test2: value2 test: value1 test2: value2 test3(sometimes included): value3 您可以看到,test3有时包含在文件中,我希望能够读取它,但不要让它与文件中的其他值混淆 为了清楚起见,我希望能够读取python中

嘿,我需要帮助解决这个问题。我希望能够读取如下格式的文本文件:

test: value1
test2: value2
test3(sometimes included): value3

test: value1
test2: value2

test: value1
test2: value2
test3(sometimes included): value3
您可以看到,test3有时包含在文件中,我希望能够读取它,但不要让它与文件中的其他值混淆

为了清楚起见,我希望能够读取python中的文件,并将变量的值放入python中的字符串中

这是我到目前为止所拥有的(这不是我想要的,因为如果该行没有test3,它会被其他值弄乱)


由于
test
test2
始终存在,因此不应将它们放入条件块中。还要注意的是,由于
test3
是可选的,因此最好使用
None
对其进行初始化,然后在将其用于某个对象时,如果它不是
None
进行测试

file = open("output.txt").readlines()

with line in file:
    test = find_between(...)
    test2 = find_between(...)
    test3 = None
    if "test3" in line:
        test3 = find_between(...)
    ...
    if test3 is not None:
        do_something(test3)

我想你需要重新拆分,代码来了

进口稀土

以open(“output.txt”、“r”)作为f:


是的,它可以工作,但我想将它们添加到一个块中,以便以后使用。e、 g test1、test2、test3,我希望能够同时使用test1和test3的值。这就是为什么我在它们之间添加了空格。不幸的是,这对我不起作用。我不明白你为什么要拆分这些反斜杠。请忽略这些反斜杠,我是想逃避的:(我设法解决了我的问题,使用re.findall:)你让我走上了正确的道路,谢谢
file = open("output.txt").readlines()

with line in file:
    test = find_between(...)
    test2 = find_between(...)
    test3 = None
    if "test3" in line:
        test3 = find_between(...)
    ...
    if test3 is not None:
        do_something(test3)
    for line in f:
        if "test3" not in line:
            continue

        items = re.split("[\(\)]", line)
        if len(items) > 1:
            print(items[1])