我有下面的代码,其中文件名是FR1.1.csv,FR2.0.csv等.我使用这些名称在标题行中打印,但我想将这些名称修改为FR1.1,Fr2.0等.因此我使用strip函数删除.csv.当我在命令提示符下尝试它的工作正常.但是当我把它添加到主脚本时它没有给出输出.
for fname in filenames:
print "fname : ", fname
fname.strip('.csv');
print "after strip fname: ", fname
headerline.append(fname+' Compile');
headerline.append(fname+' Run');
Run Code Online (Sandbox Code Playgroud)
输出我得到了
fname :FR1.1.csv
after strip fname: FR1.1.csv
Run Code Online (Sandbox Code Playgroud)
要求输出 - >
fname :FR1.1.csv
after strip fname: FR1.1
Run Code Online (Sandbox Code Playgroud)
我想在for循环后我的代码中有一些缩进问题.plesae告诉我实现这个的正确方法是什么.
字符串是不可变的,因此字符串方法不能更改原始字符串,它们返回一个您需要再次分配的新字符串:
fname = fname.strip('.csv') # no semicolons in Python!
Run Code Online (Sandbox Code Playgroud)
但是这个电话没有做你想象的那样.它会删除所有的开头和结尾的字符c,s,v并.从你的字符串:
>>> "cross.csv".strip(".csv")
'ro'
Run Code Online (Sandbox Code Playgroud)
所以你可能想做
import re
fname = re.sub(r"\.csv$", "", fname)
Run Code Online (Sandbox Code Playgroud)
字符串是不可变的.strip()返回一个新字符串.
>>> "FR1.1.csv".strip('.csv')
'FR1.1'
>>> m = "FR1.1.csv".strip('.csv')
>>> print(m)
FR1.1
Run Code Online (Sandbox Code Playgroud)
你需要这样做fname = fname.strip('.csv').
并最终摆脱分号!
PS - 请参阅Jon Clement的评论和Tim Pietzcker的答案,了解为何不应使用此代码.
您可能应该os.path用于路径操作:
import os
#...
for fname in filenames:
print "fname : ", fname
fname = os.path.splitext(fname)[0]
#...
Run Code Online (Sandbox Code Playgroud)
其他答案中提供了代码失败的特殊原因.
| 归档时间: |
|
| 查看次数: |
1484 次 |
| 最近记录: |