我正在尝试从包含字符的文件中读取" |"我需要在将数据复制到新文件时删除。例如,我的数据看起来像是,一行的内容转移到另一行:
| bob | Timestamp: 1493651705861 | sally |
我想要" |"删除,每次出现后,下一组文本将移动到下一行,所以之后它将如下所示:
bob
Timestamp: 1493651705861
sally
我构造了以下代码来逐行读取旧文件,然后逐个字符地读取,然后检查字符是否为" |"如果是不写的话。但是,当我这样做时,我的print语句不打印任何内容,新文件为空。这是我正在使用的代码:
with open('example-file','r') as f, open('example-file-New','w') as fnew:
line = f.readline()
for line in f:
for ch in line:
print("character is: ")
print(ch)
if ch =="|":
print("Not printing character")
fnew.write('\n')
else:
fnew.write(ch)
print('end of program')
fnew.close()
任何帮助都会非常感激,因为我仍然习惯于习惯Python。
答案 0 :(得分:0)
您的代码适合我,但是当我在您的示例输入上运行它时,我没有得到您的确切示例输出。基于输出,我假设您还想删除文本的空白填充。有几种方法可以实现这一点,但我喜欢在正则表达式sub
library中使用替换re
方法。
import re
with open('example-file','r') as f, open('example-file-New','w') as fnew:
for line in f:
line = re.sub("^\|\s+", "", line)
line = re.sub("\s+\|$", "", line)
line = re.sub("\s+\|\s+", "\n", line)
fnew.write(line)
"^\|\s+"
- 将第一个栏与相邻的空格匹配
"\s+\|$"
- 将最后一个条与相邻的空格匹配
"\s+\|\s+"
- 将其他栏与相邻的空格匹配
你可以用更少的表达来实现这一点,但为了清晰起见我将它们分开了。我建议花几个小时熟悉正则表达式(正则表达式),因为它会使你的文本操作任务更多更容易。