wfjx_85 发表于 2017-12-28 17:11:29

字符串切割的问题

在29课中将文字切割为三部分
使用了
for each in f:
    if each[:6] != '======':
      (role,line_sp) = each.split(':',1)
      if role =='小甲鱼':
            boy.append(line_sp)
      if role == '小客服':
            gril.append(line_sp)

在我的理解里面,for语句不应该是逐个字符验证条件吗?
为什么这里可以这样使用?if each[:6] != '======':


另外 each.split()的使用我没有明白
each.split(':',1)
是以‘:’为分隔符,我知道。这个1是什么含义。不应该是2吗?返回2个字符串

BngThea 发表于 2017-12-28 17:19:53

因为each是一个字符串,字符串是支持分片操作的,比如
s = "good day"
s[:5] = "good"

这里的1表示分割一次,也就是得到两部分

wfjx_85 发表于 2017-12-28 17:55:42

BngThea 发表于 2017-12-28 17:19
因为each是一个字符串,字符串是支持分片操作的,比如
s = "good day"
s[:5] = "good"


如何实现的逐行对比呢?

wfjx_85 发表于 2017-12-28 18:00:10

BngThea 发表于 2017-12-28 17:19
因为each是一个字符串,字符串是支持分片操作的,比如
s = "good day"
s[:5] = "good"


def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)
    count = 0 # 统计行数
    differ = [] # 统计不一样的数量

    for line1 in f1:
      line2 = f2.readline()
      count += 1
      if line1 != line2:
            differ.append(count)
我不能理解,这段代码中if line1 != line2
for line1 in f1:
不应该是逐个字符读取 F1吗?
应该不是逐行对吧?

BngThea 发表于 2017-12-28 18:34:50

wfjx_85 发表于 2017-12-28 18:00
def file_compare(file1, file2):
    f1 = open(file1)
    f2 = open(file2)


是按行

wfjx_85 发表于 2017-12-29 08:49:20

BngThea 发表于 2017-12-28 18:34
是按行

for line1 in f1:
      line2 = f2.readline()
这个按行比较是在特定情况下,还是其他设定?

BngThea 发表于 2017-12-29 08:56:59

wfjx_85 发表于 2017-12-29 08:49
for line1 in f1:
      line2 = f2.readline()
这个按行比较是在特定情况下,还是其他设定?

以下两种写法都是按行
1 for each in f:
2 while True:
   each = f.readline()
页: [1]
查看完整版本: 字符串切割的问题