我正在尝试确定某个术语是否出现在字符串中.
术语之前和之后必须出现空格,并且还允许使用标准后缀.
例:
term: google
string: "I love google!!! "
result: found
term: dog
string: "I love dogs "
result: found
Run Code Online (Sandbox Code Playgroud)
我正在尝试以下代码:
regexPart1 = "\s"
regexPart2 = "(?:s|'s|!+|,|.|;|:|\(|\)|\"|\?+)?\s"
p = re.compile(regexPart1 + term + regexPart2 , re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
并得到错误:
raise error("multiple repeat")
sre_constants.error: multiple repeat
Run Code Online (Sandbox Code Playgroud)
更新
失败的真实代码:
term = 'lg incite" OR author:"http++www.dealitem.com" OR "for sale'
regexPart1 = r"\s"
regexPart2 = r"(?:s|'s|!+|,|.|;|:|\(|\)|\"|\?+)?\s"
p = re.compile(regexPart1 + term + regexPart2 , re.IGNORECASE)
Run Code Online (Sandbox Code Playgroud)
另一方面,以下term顺利通过(+而不是++)
term = 'lg …Run Code Online (Sandbox Code Playgroud) 我有一个巨大的文本文件,我想打开.
我正在以块的形式读取文件,避免了与一次读取过多文件相关的内存问题.
代码段:
def open_delimited(fileName, args):
with open(fileName, args, encoding="UTF16") as infile:
chunksize = 10000
remainder = ''
for chunk in iter(lambda: infile.read(chunksize), ''):
pieces = re.findall(r"(\d+)\s+(\d+_\d+)", remainder + chunk)
for piece in pieces[:-1]:
yield piece
remainder = '{} {} '.format(*pieces[-1])
if remainder:
yield remainder
Run Code Online (Sandbox Code Playgroud)
代码抛出错误UnicodeDecodeError: 'utf16' codec can't decode bytes in position 8190-8191: unexpected end of data.
我试过UTF8并得到了错误UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte.
latin-1并iso-8859-1 …
我正在建立一个简单的聊天,连接Android客户端和Java服务器(在我的电脑上运行).用户可以向/从Android应用程序和桌面服务器发送和接收消息.
我正在处理如何在不同的线程中运行客户端套接字的问题UI Thread.
我看到使用AsyncTask的解决方案,但由于用户可能使用应用程序进行长时间连续通信,AsyncTask看起来像是一种糟糕的方法.
理想情况下,AsyncTasks应该用于短操作(最多几秒).API
因为我需要客户端套接字一致地监听来自桌面服务器的消息,所以我想创建一个新的Thread接收Runnable实现类.
我的问题
1.在哪个"线程机制"中放置客户端套接字行(Thread,IntentService)?
Socket client = new Socket(host, port);
InputStreamReader inputStreamReader = new InputStreamReader(client.getInputStream());
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((messageFromServer = bufferedReader.readLine()) != null) { //... }
Run Code Online (Sandbox Code Playgroud)
2.如何将客户端套接字(从不同的线程运行main thread)发布messageFromServer到TextView?
谢谢!
我正在使用vba for Excel,以便通过以下方式将数据保存到数组中:
Dim allPosts As Variant
allPosts = Range("A2:J5000")
Run Code Online (Sandbox Code Playgroud)
之后,我正在更改allPosts数组中的数据,然后我想通过以下方式将其粘贴回来:
Range("A2:J5000").Value = allPosts
Run Code Online (Sandbox Code Playgroud)
我收到错误:
运行时错误1004应用程序定义或对象定义
并且复制在特定单元格停止,当我将此单元格中的字符串更改为更短时,问题就解决了.
谢谢
我正在构建一个 Java 服务器应用程序(在 PC 上运行),该应用程序使用JmDNS将自身注册到本地网络,以及一个应该使用Network Service Discovery发现 java 服务器的 Android 客户端应用程序。
\n当我先运行android应用程序,然后运行java服务器时,应用程序成功发现注册的java服务器。
\n但是,当我第一次运行服务器,然后运行 Android 应用程序时,onDiscoveryStarted调用了该方法,但该onServiceFound方法从未触发 - Android 应用程序没有发现服务器。\n这在我看来是一个意想不到的行为。
成功案例:
\nAndroid应用程序日志:
\n08-24 22:42:06.157 NSD_DISCOVER onCreate
\n08-24 22:42:06.373 NSD_DISCOVER\xef\xb9\x95 onDiscoveryStarted 服务发现已启动
\n08-24 22:42:30.256 NSD_DISCOVER\ xef\xb9\x95 onServiceFound 已知服务类型:_http._tcp。
\n08-24 22:42:30.293 NSD_DISCOVER\xef\xb9\x95 onServiceResolved 解决成功。名称:NsdApp,类型:._http._tcp,主机:/10.0.0.2,端口:52288
Java 服务器日志:
\nSTART
\n已注册
\nEND
\nWAITING_FOR_MESSAGE
\nhello world
\nEND_THREAD
失败案例:
\n\nAndroid 应用程序日志:
\n08-24 22:05:21.690 NSD_DISCOVER\xef\xb9\x95 onCreate
\n08-24 22:05:21.908 NSD_DISCOVER\xef\xb9\x95 onDiscoveryStarted 服务发现已启动
Java 服务器日志:
\nSTART …
我正在尝试在不使用setProgressTintList方法的情况下更改Progress Bar色调,因为此方法需要API 21.
例如,单击按钮应在这两种模式之间切换:
我的代码:
int[][] states = new int[][] {
new int[] { android.R.attr.state_enabled}, // enabled
new int[] {-android.R.attr.state_enabled}, // disabled
new int[] {-android.R.attr.state_checked}, // unchecked
new int[] { android.R.attr.state_pressed} // pressed
};
int[] colors = new int[] {
getResources().getColor(R.color.my_color),
getResources().getColor(R.color.my_color),
getResources().getColor(R.color.my_color),
getResources().getColor(R.color.my_color)
};
ColorStateList myList = new ColorStateList(states, colors);
ProgressBar simpleProgressBar = (ProgressBar) findViewById(R.id.recording_progress);
simpleProgressBar.setProgressTintList(myList);
Run Code Online (Sandbox Code Playgroud) 使用ExoPlayer我正在尝试同时播放两个音轨。
我的想法是创建两个 MediaSource,并使用进行“组合” MergingMediaSource。
这是我所做的:
Uri uriAudio1 = Uri.parse(AUDIO_URL_1);
Uri uriAudio2 = Uri.parse(AUDIO_URL_2);
MediaSource audioSource1 = new ExtractorMediaSource(uriAudio1, dataSourceFactory, extractorsFactory, mainHandler, null);
MediaSource audioSource2 = new ExtractorMediaSource(uriAudio2, dataSourceFactory, extractorsFactory, mainHandler, null);
MergingMediaSource mergedAudioSource = new MergingMediaSource(audioSource1, audioSource2);
mPlayer.prepare(mergedAudioSource);
Run Code Online (Sandbox Code Playgroud)
但是,我没有听到并行的两个音轨,而是只听到了第一声audioSource1。
有任何想法吗?谢谢!
根据android的培训,如果您扩展GestureDetector.SimpleOnGestureListener,并且false从onDown(...)的返回比其他方法GestureDetector.SimpleOnGestureListener永远都不会调用:
无论您是否使用GestureDetector.OnGestureListener,最佳实践都是实现一个返回true的onDown()方法。这是因为所有手势均以onDown()消息开头。如果从onDown()返回false,则默认情况下,如GestureDetector.SimpleOnGestureListener所做的那样,系统将假定您要忽略其余手势,并且永远不会调用GestureDetector.OnGestureListener的其他方法。这有可能在您的应用程序中引起意外问题。唯一应该从onDown()返回false的情况是,如果您确实要忽略整个手势。
但是,在我的简单测试onScroll(...)中被称为。
public void onCreate(Bundle savedInstanceState) {
mDetector = new GestureDetectorCompat(this, MyGestureListener);
}
public boolean onTouchEvent(MotionEvent event) {
mDetector.onTouchEvent(event);
return true;
}
class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
private boolean scrollEvent;
@Override
public boolean onDown (MotionEvent event) {
Log.v("GESTURE", "onDown ");
return false;
}
@Override
public boolean onScroll (MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.v("GESTURE", "onScroll");
return true;
}
Run Code Online (Sandbox Code Playgroud)
另一个类似的问题是下一个定义,同样来自相同的android培训页面:
来自各个on方法的返回值true表示您已经处理了touch事件。返回值为false的事件将事件向下传递通过视图堆栈,直到成功处理触摸为止。
如何用之前的报价解决?
我正在尝试打开一个巨大的文本文件(1 GB)并执行一些文本挖掘.
我愿意进行一些正则表达式搜索.
当我使用read()函数时,我收到错误:
File "C:\Python33\lib\encodings\latin_1.py", line 26, in decode
return codecs.latin_1_decode(input,self.errors)[0]
MemoryError
Run Code Online (Sandbox Code Playgroud)
我的代码是:
dataFile = open('data/AllData_2000001_3000000.txt', 'r', encoding="latin-1")
print(dataFile.read())
Run Code Online (Sandbox Code Playgroud)
为了执行正则表达式搜索,打开文本的最佳方法是什么?
谢谢!
我有很多CSV文件,我希望他们加入一个txt文件binary格式..
以下代码给出了上述错误:
import os
from csv import reader
from csv import writer
CONST_DATA_DIR = "F:/Data/"
CONST_DATABIN_DIR = "F:/DataBinary/"
def createFilesArr():
filesArr = []
os.chdir(CONST_DATA_DIR)
for file in os.listdir("."):
if file.endswith(".csv"):
filesArr.append(file)
return filesArr
filesArr = createFilesArr()
newFileName = "oneBinaryFile.txt"
newFile = open(CONST_DATABIN_DIR + newFileName, 'wb')
for file in filesArr:
currentFile = open(CONST_DATA_DIR + file, 'r', newline='', encoding='UTF8')
newFile.write(currentFile.read())
currentFile.close()
newFile.close()
Run Code Online (Sandbox Code Playgroud)
编辑:
该CSV文件最初是写成一个txt类型.另一方面,合并文件应该是二进制格式.
创建CSV文件的过程很复杂,因此,如果可能的话,我更喜欢在阅读之前以某种方式转换文件.
有什么建议?