【Python】为什么无法strip()掉数据文件中的换行

 

问题:

我想替换掉如下数据中,twitter转发的文本部分的换行:

begin	25/11/2014 17:11:22	@jdbueno2011	Juan Bueno	"RT @_thatshimyall: Don't scroll
#Retweet  To Say R.I.P
#Fav To Show Justice http://XXXXX"	Twitter for iPhone	74	5	0	

方法为startwith判断开头,然后拼接字符串:

def _joint_lines(old_data = []):
    new_data = []
    tmp = old_data[0].strip("\r\n\t")
    for dd in range(1, len(old_data)): # 从数据第二行开始,第一行已经赋值给tmp
        line = old_data[dd]
        if line.strip("\r\n\t") == "":
            continue
        if line.startswith("begin"):   # 如果begin开头,把上一条的tmp缓存存入new_lis;对tmp重新赋值为当前值
            new_data.append(tmp)
            tmp = line
        else:
            tmp +=line.strip("\r\n\t")
        print(dd, tmp)
    new_data.append(tmp)               # 数据最后一行将tmp中数据直接存入
    print("\n".join(new_data))

结果输出中并没有如我所愿合并为一行。

猜想原因1:(错误)

"RT @_thatshimyall: Don't scroll
#Retweet  To Say R.I.P
#Fav To Show Justice http://XXXXX"

这部分内容是被引号括起来的,简言之,回车符处在字符串中间,而不是结尾。举个例子:

真实原因:

line少写了一个strip(), 正确代码为:

def _joint_lines(old_data = []):
    new_data = []
    tmp = old_data[0].strip()
    for dd in range(1, len(old_data)): # 从数据第二行开始读取,第一行已经赋值给tmp
        line = old_data[dd].strip()
        if line.strip() == "":
            continue
        if line.startswith("begin"):   # 如果begin开头,把上一条的tmp缓存存入new_lis;对tmp重新赋值为当前值
            new_data.append(tmp)
            tmp = line
        else:
            tmp +=line
    new_data.append(tmp)               # 读到最后一行,将tmp中数据直接存入
    print("\n".join(new_data))

 

发布了392 篇原创文章 · 获赞 492 · 访问量 241万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览