Python : 将一个值一分为二并分配给两个不同的变量

Python : Splitting a value into two and assigning into two different variable

我正在尝试从具有如下开始和结束日期范围的文件中获取字符串:

"Date Range = January 1, 2001 to December 24, 2008"

我必须选择这个日期范围(2001 年 1 月 1 日到 2008 年 12 月 24 日)并将其拆分并分配给 2 个不同的变量。我能够获取日期范围并拆分它们,但是在分配时出现错误。

file_path = open("C:\Users\vinnu\Desktop\ARF_LS00006493_339313_Tremont.txt")
content = file_path.read()

#find and pick the date range
size = len(content)
start =0
while start < size:
    start = content.find("Date Range: ",start)
    start = start if start != -1 else size
    #fetch only till the end of line
    end = content.find("\n", start)
    end = end if end != -1 else size
    date_range = (content[start+12:end])
    start = end + 1
    #printing test
    print (date_range)

    #split
    date1,date2= date_range.split(' to ')
    print (date1)
    print (date2)

我得到以下错误输出:

January 1, 2001 to December 24, 2008
January 1, 2001
December 24, 2008

Traceback (most recent call last):
  File "C:/Users/vinnu/Desktop/split_eg3.py", line 19, in <module>
    date1,date2= date_range.split(' to ')
ValueError: not enough values to unpack (expected 2, got 1)

我不会为此使用循环,您可以在整个过程中使用拆分:

def parseDates(s):
    _, dates = s.split(" = ")
    initDate, endDate = dates.split(" to ")
    return (initDate, endDate)

然后在读取文件时使用函数:

with open("yourFileName", "r") as f:
    for line in f.readlines():
        id, ed = parseDates(line)
        print(id)
        print(ed)

我将尝试解释您得到的输出

第一次进入循环,一切都很好...

January 1, 2001 to December 24, 2008
January 1, 2001
December 24, 2008

现在您再次进入循环(很可能文件末尾有一些 \n\n)

start = content.find("Date Range: ",start)
start = start if start != -1 else size

现在应该"size"开始

date_range = (content[start+12:end]) # start==size remember? => ""
start = end + 1
#printing test
print (date_range) #you print an empty string here!

打印空行后

date1,date2= date_range.split(' to ') #splitting the empty string

和爆炸:

Traceback (most recent call last):
  File "C:/Users/vinnu/Desktop/split_eg3.py", line 19, in <module>
    date1,date2= date_range.split(' to ')
ValueError: not enough values to unpack (expected 2, got 1)