python 怎么合并多行为一行?

比如一个.txt文件,列了一些数892.43892.43892.43208.59208.59A8.02371.4850.650.6...怎么把这些数变为一行,用逗号隔开,... 比如一个.txt文件,列了一些数
892.43
892.43
892.43
208.59
208.59
A8.02
371.48
50.6
50.6
...

怎么把这些数变为一行,用逗号隔开,并且同一个值的只取一个,如
892.43,208.59,A8.02,371.48,50.6

谢谢!
展开
 我来答
albumin
2013-06-07 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2410万
展开全部
由于集合元素顺序的不确定性
下面程序合并后的行顺序不确定,但符合同一值只取一个的要求

originfile=open(r'origin.txt') #打开储存数据的文件
myset=set() #建立集合myset
for line in originfile.readlines(): #读取文件每一行
line=line.strip() #去掉每行前面和后面的空格和换行符
myset.add(line) #将数字加人集合,由于集合的唯一性,已有值不会添加
result=','.join(myset) #逗号隔开,合并集合为一个字符串
targetfile=open(r'target.txt','w') #打开目标文件写入
targetfile.write(result) #将结果写入目标文件
originfile.close() #关闭原始文件
targetfile.close() #关闭目标文件
追问
太谢谢你了!每行还带注释!
还有个问题,我知道txt文件中892.43 其实是892.43\n, strip() 去掉了后面的\n,去掉了前面什么?空格吗?可是892.43前面没有空格啊
追答
有空格会去掉前面的空格,没有空格什么都不会去掉,保持原样
tim_spac
2015-06-26 · TA获得超过3628个赞
知道大有可为答主
回答量:1804
采纳率:100%
帮助的人:2026万
展开全部
# read data from file
with open("data_src.txt", 'rt') as src:
    data = [ln.strip() for ln in src]

# distinct data and write to file with ', ' join
with open("data_sto.txt", 'wt') as sto:
    sto.write(', '.join(list(set(data))))

 python 中 set 是 “unordered collection of unique elements” 可以自动实现剔除重复数据。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sitting2002
2013-06-07
知道答主
回答量:26
采纳率:100%
帮助的人:11.5万
展开全部
def hebing2(infile,outfile):
with open(infile,'r') as _in_,open(outfile,'w') as _out_:
outlist=[]
newlist=[l.strip() for l in _in_ ]
for item in newlist:
if item not in outlist:
outlist.append(item)
outlist=','.join(outlist)
print(outlist,file=_out_)

hebing2('in.txt','out.txt')

hebing2函数参数1为输入文件,参数2为输出文件。
楼上的没有解决顺序问题,字典是没有顺序的。我想这个才是楼主想要的东西。
追问
谢谢你!不过楼上的注释写的很好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b0486a3
2013-06-07 · TA获得超过655个赞
知道小有建树答主
回答量:698
采纳率:0%
帮助的人:485万
展开全部
把 \n全部替换成逗号会怎样?嘿嘿!
其实用shell很简单。

cat urfile|uniq|sed -i 's/\n/,/g' 没测试哈···
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式