似乎应该有一个比以下更简单的方法:
import string
s = "string. With. Punctuation?" # Sample string
out = s.translate(string.maketrans("",""), string.punctuation)
Run Code Online (Sandbox Code Playgroud)
在那儿?
我需要用空格替换所有非ASCII(\ x00-\x7F)字符.我很惊讶这在Python中并不容易,除非我遗漏了一些东西.以下函数只删除所有非ASCII字符:
def remove_non_ascii_1(text):
return ''.join(i for i in text if ord(i)<128)
Run Code Online (Sandbox Code Playgroud)
并且这个用字符代码点中的字节数替换非ASCII字符和空格量(即–字符被3个空格替换):
def remove_non_ascii_2(text):
return re.sub(r'[^\x00-\x7F]',' ', text)
Run Code Online (Sandbox Code Playgroud)
如何用单个空格替换所有非ASCII字符?
的 在 无数 的 类似 SO 问题,无 地址 的字符 替换 为 反对 以 剥离,并进一步解决所有非ASCII字符不是一个特定的字符.
我目前正在使用Beautiful Soup来解析HTML文件并调用get_text(),但似乎我留下了很多代表空格的\ xa0 Unicode.有没有一种有效的方法可以在Python 2.7中删除所有这些,并将它们更改为空格?我想更普遍的问题是,有没有办法删除Unicode格式?
我尝试使用:line = line.replace(u'\xa0',' '),正如另一个线程所建议的,但是将\ xa0改为你的,所以现在我到处都是"u".):
编辑:问题似乎解决了str.replace(u'\xa0', ' ').encode('utf-8'),但只是.encode('utf-8')没有replace()似乎导致它吐出甚至更奇怪的字符,例如\ xc2.有谁能解释一下?
我试图将html实体转换为unichar,html实体是󮠖
当我尝试执行以下操作时:
unichr(int(976918))
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
Run Code Online (Sandbox Code Playgroud)
似乎它超出了unichar的范围转换.
我正在研究一个项目(基于内容的搜索),因为我在Ubuntu中使用'pdftotext'命令行实用程序,它将所有文本从pdf写入一些文本文件.但是它也写了子弹,现在当我正在读取文件来索引每个单词时,它也会得到一些索引的转义序列(比如'\ x01').我知道它是因为子弹(•).
我只想要文本,所以有没有办法删除这个转义序列.我做过这样的事情
escape_char = re.compile('\+x[0123456789abcdef]*')
re.sub(escape_char, " ", string)
Run Code Online (Sandbox Code Playgroud)
但这不会删除转义序列
提前致谢.
有时候我有一个带有奇怪字符的字符串.它们在浏览器中不可见,但是是字符串的一部分,并以len()计算.我怎么能摆脱它?Strip()删除正常空间但不删除那些符号.
我匹配标识符,但现在我遇到了问题:我的标识符允许包含unicode字符.因此,旧的做事方式是不够的:
t_IDENTIFIER = r"[A-Za-z](\\.|[A-Za-z_0-9])*"
Run Code Online (Sandbox Code Playgroud)
在我的标记语言解析器中,我通过允许除了我明确使用的那些字符之外的所有字符来匹配unicode字符,因为我的标记语言只有两个或三个我需要以这种方式转义的字符.
如何将所有unicode字符与python正则表达式和ply匹配?这也是一个好主意吗?
我想让人们在他们的程序中使用像Ω»«°foo²väliπ这样的标识符作为标识符(变量名等).哎呀!我希望人们可以用他们自己的语言编写程序,如果它是实用的!无论如何,unicode现在在各种各样的地方得到支持,它应该传播.
编辑:POSIX字符类似乎不被python正则表达式识别.
>>> import re
>>> item = re.compile(r'[[:word:]]')
>>> print item.match('e')
None
Run Code Online (Sandbox Code Playgroud)
编辑:更好地解释我需要的东西.我需要一个正则表达式匹配所有unicode可打印字符,但根本不匹配ASCII字符.
编辑:r"\ w"做了我想要的东西,但它不匹配«»,我还需要一个与数字不匹配的正则表达式.
如何在 Python 中以非打印 ascii 字符(例如长减号十六进制 0x97 ,八进制 227 )分割一行?我不需要角色本身。其后的信息将保存为变量。
我无法让replace()工作
我试过my_string.replace('\\', '')和re.sub('\\', '', my_string),但没有一个工作.
我以为\是反斜杠的转义码,我错了吗?
有问题的字符串看起来像
'<2011315123.04C6DACE618A7C2763810@\x82\xb1\x82\xea\x82\xa9\x82\xe7\x8c\xa9\x82\xa6\x82\xe9\x82\xbe\x82\xeb\x82\xa4>'
要么 print my_string
<2011315123.04C6DACE618A7C2763810@????????????>
是的,它应该看起来像垃圾,但我宁愿得到
'<2011315123.04C6DACE618A7C2763810@82b182ea82a982e78ca982a682e982be82eb82a4>'
我正在以 10,000 行的块读取 1 GB CSV 文件。该文件有 1106012 行和 171 列,其他较小的文件没有显示任何错误并成功完成,但是当我读取这个 1 GB 文件时,它每次都在行号 1106011 上显示错误,这是文件的倒数第二行,我可以手动删除该行,但这不是解决方案,因为我有数百个相同大小的其他文件,我无法手动修复所有行。任何人都可以帮我解决这个问题。
def extract_csv_to_sql(input_file_name, header_row, size_of_chunk, eachRow):
df = pd.read_csv(input_file_name,
header=None,
nrows=size_of_chunk,
skiprows=eachRow,
low_memory=False,
error_bad_lines=False,
sep=',')
# engine='python'
# quoting=csv.QUOTE_NONE
# encoding='utf-8'
df.columns = header_row
df = df.drop_duplicates(keep='first')
df = df.apply(lambda x: x.astype(str).str.lower())
return df
Run Code Online (Sandbox Code Playgroud)
然后我在循环中调用这个函数并且工作得很好。
huge_chunk_return = extract_csv_to_sql(huge_input_filename, huge_header_row, the_size_of_chunk_H, each_Row_H)
Run Code Online (Sandbox Code Playgroud)
我在将多个 csv 文件读取到 HDF5 时读取了这个Pandas ParserError EOF 字符,字符串中的这个read_csv() & EOF 字符导致解析问题,这个https://github.com/pandas-dev/pandas/issues/11654等等尝试包含 read_csv 参数,例如
引擎='蟒蛇'
quoting=csv.QUOTE_NONE …
我有一个 csv 文件,4000 条记录中只有 4 条包含一些非 ASCII 字符。例如
['com.manager', '2016012300', '16.1.23', 'en', 'kinzie', '2015-04-11T17:36:23Z', '1428773783781', '2016-03-11T09:53:45Z', 'df', '5', "\xa5\x06`'", '\xc0\x03"', '\xa2{\xac ===]\xa9}\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7\xf7>', '', '', '', 'https://play.google.com/apps/publish?account=sd#ReviewDetailsPlace:p=com.manager&reviewid=gp:AOqpTOEcQQGmjFcd-bFfU372DTrxh']
Run Code Online (Sandbox Code Playgroud)
我正在使用以下 python 代码来读取 csv
with open('/Users/duttaam/Downloads/test1.csv', 'rU') as csvfile:
reader_obj = csv.reader(x.replace('\0', '') for x in csvfile)
rownum=0
for row in reader_obj:
rownum += 1
if len(row) != 16:
print rownum
print row
Run Code Online (Sandbox Code Playgroud)
对于四行,阅读器显示不一致的列号。但是当我计算这些行中的分隔符(,)时,它显示得很好。我能看到的唯一问题是非 ascii 字符,如上行所示的示例行。我猜这些是一些表情符号转换成一些字符。
我想出了一个从字符串中删除不可打印字符的函数,如何将其应用于整个 csv?(感谢以下帖子:Stripping non printable characters from a string in python)
def removeSpecialcahr(s):
printable = set(string.printable)
return …Run Code Online (Sandbox Code Playgroud)