首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从.txt中清除,将新变量作为csv分隔字符串(而不是列表)写入csv文件

从.txt中清除,将新变量作为csv分隔字符串(而不是列表)写入csv文件
EN

Stack Overflow用户
提问于 2016-10-09 00:11:37
回答 2查看 49关注 0票数 0

我的.txt文件如下所示:

代码语言:javascript
运行
复制
Page 1 of 49
<="">
View Full Profile
S.S. Anne
Oil Tanker
42 miles offshore
Anchor length is 50 feet
<="">
View Full Profile
S.S. Minnow
Passenger Ship
1502.2 miles offshore
Anchor length is 12 feet
<="">
View Full Profile
S.S. Virginia
Passenger Ship
2 km offshore
Anchor length is 25 feet
<="">
View Full Profile
S.S. Chesapeake
Naval Ship
10 miles offshore
Anchor length is 75 feet
<="">

我已经计算出了清理部分,以便在“查看完整配置文件”之后,我将接下来的4个行项目放入它们自己的新行项目中,我对“查看完整配置文件”的每个实例都这样做。

代码:

代码语言:javascript
运行
复制
import csv 

data = []
with open('ship.txt','r',encoding='utf8') as f:
    lines = f.readlines()
    for i, line in enumerate(lines):
        if 'View Full Profile' in line:
            x = [lines[i+1],lines[i+2],lines[i+3],lines[i+4]]
            data.append(x)

for line in data:
    y = line
    print(y)

with open('ship_test.csv', 'w') as csv_file:
    writer = csv.writer(csv_file, delimiter=',')
    for line in data:
        writer.writerow(line)

输出y以查看将写入新文件的内容是:

代码语言:javascript
运行
复制
['S.S. Anne\n', 'Oil Tanker\n', '42 miles offshore\n', 'Anchor length is 50 feet\n']
['S.S. Minnow\n', 'Passenger Ship\n', '1502.2 miles offshore\n', 'Anchor length is 12 feet\n']
['S.S. Virginia\n', 'Passenger Ship\n', '2 km offshore\n', 'Anchor length is 25 feet\n']
['S.S. Chesapeake\n', 'Naval Ship\n', '10 miles offshore\n', 'Anchor length is 75 feet\n']
[Finished in 0.1s]

当它复制到新文件中时,我会得到以下内容:

代码语言:javascript
运行
复制
"S.S. Anne
","Oil Tanker
","42 miles offshore
","Anchor length is 50 feet
"
"S.S. Minnow
","Passenger Ship
","1502.2 miles offshore
","Anchor length is 12 feet
"
"S.S. Virginia
","Passenger Ship
","2 km offshore
","Anchor length is 25 feet

"
"S.S. Chesapeake
","Naval Ship
","10 miles offshore
","Anchor length is 75 feet
"

我希望将y的输出写入到新文件中。我认为,由于x的每个元素都附加了'/n‘,所以它将每个项目写为自己的行。我如何删除它(我尝试拆分,但收到一个错误),以便x在新文件中作为csv字符串作为单行项目写入?

EN

回答 2

Stack Overflow用户

发布于 2016-10-09 00:15:57

代码语言:javascript
运行
复制
line = line.replace('\n', '')

使用replace方法

如果有字符串列表:

代码语言:javascript
运行
复制
line = [l.replace('\n', '') for l in line]
票数 0
EN

Stack Overflow用户

发布于 2016-10-09 00:34:36

您应该在读完一行后立即去掉结尾的换行符。代码的第一部分可能会变成:

代码语言:javascript
运行
复制
data = []
with open('ship.txt','r',encoding='utf8') as f:
    for line in lines:
        if 'View Full Profile' in line:
            x = [ next(f).strip(), next(f).strip(),
                  next(f).strip(), next(f).strip() ]
            data.append(x)

您甚至可以动态编写csv文件:

代码语言:javascript
运行
复制
with open('ship.txt','r',encoding='utf8') as f, open('ship_test.csv', 'w') as csv_file:
    writer = csv.writer(csv_file, delimiter=',')
    for line in f:
        if 'View Full Profile' in line:
            x = [ next(f).strip(), next(f).strip(),
                  next(f).strip(), next(f).strip() ]
            writer.writerow(x)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39934531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档