我读取ini文件以在python中打开文件。 事情是,文件信息有时在“..”中,但有时它不是。如何检测文件路径是否用Python封装在“..”中?
例如,
fileA = "https://stackoverflow.com/a/b/c.txt"
fileB = /a/b/d.txt
有没有简单的方法来检测一个字符串被包裹在“..”,并返回报价字符串里面?
我读取ini文件以在python中打开文件。 事情是,文件信息有时在“..”中,但有时它不是。如何检测文件路径是否用Python封装在“..”中?
例如,
fileA = "https://stackoverflow.com/a/b/c.txt"
fileB = /a/b/d.txt
有没有简单的方法来检测一个字符串被包裹在“..”,并返回报价字符串里面?
简单检测将涉及检查s[:1] == s[-1:] == '"'
(仔细切片,而不是索引,以避免例外,如果s
是一个空字符串措辞的话),以及有条件的去除每端只有一个报价,如果一个出现在两端
if s[:1] == s[-1:] == '"':
s = s[1:-1]
另外,在进场@马格努斯的回答,因为他说,删除所有前导和尾随报价,并无条件地这样做;因此,例如,如果s
以三个引号开头,但不以任何结尾(并且在所有其他奇怪的情况下,除了所述的规格之外),我的答案中的片段不会更改s
,@ Magnus的意志剥离三个主要报价。 “你付出你的钱,你选择了......”如果你不在意这种或那种方式(即你确信两个答案不同的情况是“完全不可能的”)。 ..),那么我认为@Magnus的抽象级别更高的方法更简洁(但是,这是一个风格问题 - 当你不关心不匹配或不平衡的引号时,他的方法和我的解决方案都是正确的Python解决方案;-) 。
要删除所有前导和尾随报价:
fileA = fileA.strip('"')
s [0] == s [-1] =='''会不一样,还是更好? – prosseek 2010-09-12 04:58:22
@prosseek,如果有'len(s)== 0',会产生一个异常; if你神奇地确定不会发生,或者当's'是一个空字符串时_want_是一个异常,索引而不是切片可以更快。 – 2010-09-12 05:13:28