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
谢谢! 展开
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
谢谢! 展开
展开全部
由于集合元素顺序的不确定性
下面程序合并后的行顺序不确定,但符合同一值只取一个的要求
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() #关闭目标文件
下面程序合并后的行顺序不确定,但符合同一值只取一个的要求
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前面没有空格啊
追答
有空格会去掉前面的空格,没有空格什么都不会去掉,保持原样
展开全部
# 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” 可以自动实现剔除重复数据。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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为输出文件。
楼上的没有解决顺序问题,字典是没有顺序的。我想这个才是楼主想要的东西。
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为输出文件。
楼上的没有解决顺序问题,字典是没有顺序的。我想这个才是楼主想要的东西。
追问
谢谢你!不过楼上的注释写的很好
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把 \n全部替换成逗号会怎样?嘿嘿!
其实用shell很简单。
cat urfile|uniq|sed -i 's/\n/,/g' 没测试哈···
其实用shell很简单。
cat urfile|uniq|sed -i 's/\n/,/g' 没测试哈···
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询