加入清单:
>>> ''.join([ str(_) for _ in xrange(10) ])
'0123456789'
Run Code Online (Sandbox Code Playgroud)
join 必须采取迭代.
显然,join这个论点是[ str(_) for _ in xrange(10) ],这是一个列表理解.
看这个:
>>>''.join( str(_) for _ in xrange(10) )
'0123456789'
Run Code Online (Sandbox Code Playgroud)
现在,join这个论点只是str(_) for _ in xrange(10),不[],但结果是一样的.
为什么?是否str(_) for _ in xrange(10)也会产生一个列表或一个可迭代?
从正则表达式的python文档,关于'\'字符:
解决方案是使用Python的原始字符串表示法来表示正则表达式模式; 在前缀的字符串文字中,不以任何特殊方式处理反斜杠
'r'.所以r"\n"是一个包含'\'和的双字符字符串'n',"\n"而是包含换行符的单字符字符串.通常,模式将使用此原始字符串表示法在Python代码中表示.
什么是原始字符串表示法?如果您使用原始字符串格式,这是否意味着"*"作为文字字符而不是零或多指标?这显然是不对的,否则正则表达式将彻底失去它的力量.但是,如果它是一个原始字符串,它"\n"是如何识别换行符,如果它实际上是一个反斜杠和一个"n"?
我不跟随.
编辑赏金:
我试图理解原始字符串正则表达式如何匹配换行符,制表符和字符集,例如\w单词或\d数字或所有其他,如果原始字符串模式不能将反斜杠识别为普通字符以外的任何内容.我真的可以使用一些很好的例子.
在Python中,我写了这个:
bvar=mht.get_value()
temp=self.treemodel.insert(iter,0,(mht,False,*bvar))
Run Code Online (Sandbox Code Playgroud)
我正在尝试bvar将函数调用扩展为参数.但它返回:
File "./unobsoluttreemodel.py", line 65
temp=self.treemodel.insert(iter,0,(mht,False,*bvar))
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
刚刚发生了什么?它应该是对的吗?
我目前使用re.findall查找并隔离字符串中哈希标记的'#'字符后的单词:
hashtags = re.findall(r'#([A-Za-z0-9_]+)', str1)
Run Code Online (Sandbox Code Playgroud)
它搜索str1并找到所有的hashtags.这可行,但它不考虑像这样的重音字符,例如:áéíóúñü¿.
如果其中一个字母在str1中,它会将标签保存到它之前的字母.例如,#yogenfrüz将是#yogenfr.
我需要能够解释所有带有德语,荷兰语,法语和西班牙语的重音字母,以便我可以保存像 #yogenfrüz
我怎么能这样做呢
from glob import glob
pattern = "D:\\report\\shakeall\\*.txt"
filelist = glob(pattern)
def countwords(fp):
with open(fp) as fh:
return len(fh.read().split())
print "There are" ,sum(map(countwords, filelist)), "words in the files. " "From directory",pattern
import os
uniquewords = set([])
for root, dirs, files in os.walk("D:\\report\\shakeall"):
for name in files:
[uniquewords.add(x) for x in open(os.path.join(root,name)).read().split()]
print "There are" ,len(uniquewords), "unique words in the files." "From directory", pattern
Run Code Online (Sandbox Code Playgroud)
到目前为止我的代码是这样的.这会计算来自的唯一单词和总单词的数量D:\report\shakeall\*.txt
问题是,例如,此代码识别code code.和code!不同的单词.因此,这不能解决确切数量的独特单词.
我想使用Windows文本编辑器从42个文本文件中删除特殊字符
或者制定解决此问题的例外规则.
如果使用后者,我的代码怎么样?
让它直接修改文本文件?或者做一个不计算特殊字符的异常?
想要解析文本并仅返回字母,数字,正斜杠和反斜杠,并替换所有其他内容''.
是否可以只使用一个正则表达式模式而不是几个然后调用循环?我无法得到下面的模式,不能替换后退和正斜杠.
line1 = "1/R~e`p!l@@a#c$e%% ^A&l*l( S)-p_e+c=ial C{har}act[er]s ;E xce|pt Forw:ard\" $An>d B,?a..ck Sl'as<he#s\\2"
line2 = line
RGX_PATTERN = "[^\w]", "_"
for pattern in RGX_PATTERN:
line = re.sub(r"%s" %pattern, '', line)
print("replace1: " + line)
#Prints: 1ReplaceAllSpecialCharactersExceptForwardAndBackSlashes2
Run Code Online (Sandbox Code Playgroud)
在从SO下面的代码已经过测试,发现比正则表达式快,但随后它取代所有特殊字符,包括/和\,我希望保留.有没有办法编辑它以适用于我的用例并仍然保持其优于正则表达式的优势?
line2 = ''.join(e for e in line2 if e.isalnum())
print("replace2: " + line2)
#Prints: 1ReplaceAllSpecialCharactersExceptForwardAndBackSlashes2
Run Code Online (Sandbox Code Playgroud)
作为额外的障碍,正在解析的文本应该是ASCII格式,因此如果可能的话,来自任何其他编码的字符也应该替换为''